Skip to content

Commit 471ce07

Browse files
committed
Fix valgrind warnings
1 parent 4e32254 commit 471ce07

1 file changed

Lines changed: 28 additions & 15 deletions

File tree

redis_array_impl.c

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,34 +1135,49 @@ ra_move_key(const char *key, int key_len, zval *z_from, zval *z_to TSRMLS_DC) {
11351135
}
11361136

11371137
/* callback with the current progress, with hostname and count */
1138-
static void zval_rehash_callback(zend_fcall_info *z_cb, zend_fcall_info_cache *z_cb_cache,
1139-
const char *hostname, long count, zval *z_ret TSRMLS_DC) {
1140-
1141-
zval z_args[2];
1138+
static void
1139+
zval_rehash_callback(zend_fcall_info *z_cb, zend_fcall_info_cache *z_cb_cache,
1140+
const char *hostname, long count TSRMLS_DC) {
11421141

1143-
ZVAL_STRING(&z_args[0], hostname);
1144-
ZVAL_LONG(&z_args[1], count);
1142+
zval zv, *z_ret = &zv;
11451143

1144+
ZVAL_NULL(z_ret);
11461145
#if (PHP_MAJOR_VERSION < 7)
1147-
zval *z_host = &z_args[0], *z_count = &z_args[1],
1148-
**z_args_pp[2] = { &z_host, &z_count };
1146+
zval *z_host, *z_count, **z_args_pp[2];
1147+
1148+
MAKE_STD_ZVAL(z_host);
1149+
ZVAL_STRING(z_host, hostname);
1150+
z_args_pp[0] = &z_host;
1151+
1152+
MAKE_STD_ZVAL(z_count);
1153+
ZVAL_LONG(z_count, count);
1154+
z_args_pp[1] = &z_count;
1155+
11491156
z_cb->params = z_args_pp;
11501157
z_cb->retval_ptr_ptr = &z_ret;
11511158
#else
1159+
zval z_args[2];
1160+
1161+
ZVAL_STRING(&z_args[0], hostname);
1162+
ZVAL_LONG(&z_args[1], count);
1163+
11521164
z_cb->params = z_args;
11531165
z_cb->retval = z_ret;
11541166
#endif
1155-
z_cb->param_count = 2;
11561167
z_cb->no_separation = 0;
1168+
z_cb->param_count = 2;
11571169

11581170
/* run cb(hostname, count) */
11591171
zend_call_function(z_cb, z_cb_cache TSRMLS_CC);
11601172

11611173
/* cleanup */
1162-
zval_dtor(&z_args[0]);
11631174
#if (PHP_MAJOR_VERSION < 7)
1164-
zval_ptr_dtor(&z_ret);
1175+
zval_ptr_dtor(&z_host);
1176+
zval_ptr_dtor(&z_count);
1177+
#else
1178+
zval_dtor(&z_args[0]);
11651179
#endif
1180+
zval_dtor(z_ret);
11661181
}
11671182

11681183
static void
@@ -1172,7 +1187,7 @@ ra_rehash_server(RedisArray *ra, zval *z_redis, const char *hostname, zend_bool
11721187
char **keys;
11731188
long count, i;
11741189
int *key_lens, target_pos;
1175-
zval *z_target, z_ret;
1190+
zval *z_target;
11761191

11771192
/* list all keys */
11781193
if(b_index) {
@@ -1185,9 +1200,7 @@ ra_rehash_server(RedisArray *ra, zval *z_redis, const char *hostname, zend_bool
11851200

11861201
/* callback */
11871202
if(z_cb && z_cb_cache) {
1188-
ZVAL_NULL(&z_ret);
1189-
zval_rehash_callback(z_cb, z_cb_cache, hostname, count, &z_ret TSRMLS_CC);
1190-
zval_dtor(&z_ret);
1203+
zval_rehash_callback(z_cb, z_cb_cache, hostname, count TSRMLS_CC);
11911204
}
11921205

11931206
/* for each key, redistribute */

0 commit comments

Comments
 (0)