Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2017-08-02 17:42:34 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2017-08-02 17:42:34 +0300
commit471ce0724d2e4aeffe7f326ae474be36cf8716ab (patch)
treee32694254ea5d83595c43888848d6c4236a7fed7 /redis_array_impl.c
parent4e32254ec22c37d74a3a22a03a7cf981c1126b60 (diff)
Fix valgrind warnings
Diffstat (limited to 'redis_array_impl.c')
-rw-r--r--redis_array_impl.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/redis_array_impl.c b/redis_array_impl.c
index a929fa20..ceab1884 100644
--- a/redis_array_impl.c
+++ b/redis_array_impl.c
@@ -1135,34 +1135,49 @@ ra_move_key(const char *key, int key_len, zval *z_from, zval *z_to TSRMLS_DC) {
}
/* callback with the current progress, with hostname and count */
-static void zval_rehash_callback(zend_fcall_info *z_cb, zend_fcall_info_cache *z_cb_cache,
- const char *hostname, long count, zval *z_ret TSRMLS_DC) {
-
- zval z_args[2];
+static void
+zval_rehash_callback(zend_fcall_info *z_cb, zend_fcall_info_cache *z_cb_cache,
+ const char *hostname, long count TSRMLS_DC) {
- ZVAL_STRING(&z_args[0], hostname);
- ZVAL_LONG(&z_args[1], count);
+ zval zv, *z_ret = &zv;
+ ZVAL_NULL(z_ret);
#if (PHP_MAJOR_VERSION < 7)
- zval *z_host = &z_args[0], *z_count = &z_args[1],
- **z_args_pp[2] = { &z_host, &z_count };
+ zval *z_host, *z_count, **z_args_pp[2];
+
+ MAKE_STD_ZVAL(z_host);
+ ZVAL_STRING(z_host, hostname);
+ z_args_pp[0] = &z_host;
+
+ MAKE_STD_ZVAL(z_count);
+ ZVAL_LONG(z_count, count);
+ z_args_pp[1] = &z_count;
+
z_cb->params = z_args_pp;
z_cb->retval_ptr_ptr = &z_ret;
#else
+ zval z_args[2];
+
+ ZVAL_STRING(&z_args[0], hostname);
+ ZVAL_LONG(&z_args[1], count);
+
z_cb->params = z_args;
z_cb->retval = z_ret;
#endif
- z_cb->param_count = 2;
z_cb->no_separation = 0;
+ z_cb->param_count = 2;
/* run cb(hostname, count) */
zend_call_function(z_cb, z_cb_cache TSRMLS_CC);
/* cleanup */
- zval_dtor(&z_args[0]);
#if (PHP_MAJOR_VERSION < 7)
- zval_ptr_dtor(&z_ret);
+ zval_ptr_dtor(&z_host);
+ zval_ptr_dtor(&z_count);
+#else
+ zval_dtor(&z_args[0]);
#endif
+ zval_dtor(z_ret);
}
static void
@@ -1172,7 +1187,7 @@ ra_rehash_server(RedisArray *ra, zval *z_redis, const char *hostname, zend_bool
char **keys;
long count, i;
int *key_lens, target_pos;
- zval *z_target, z_ret;
+ zval *z_target;
/* list all keys */
if(b_index) {
@@ -1185,9 +1200,7 @@ ra_rehash_server(RedisArray *ra, zval *z_redis, const char *hostname, zend_bool
/* callback */
if(z_cb && z_cb_cache) {
- ZVAL_NULL(&z_ret);
- zval_rehash_callback(z_cb, z_cb_cache, hostname, count, &z_ret TSRMLS_CC);
- zval_dtor(&z_ret);
+ zval_rehash_callback(z_cb, z_cb_cache, hostname, count TSRMLS_CC);
}
/* for each key, redistribute */