@@ -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
11681183static 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