@@ -927,7 +927,6 @@ PHP_METHOD(RedisArray, mget)
927927 argv [i ++ ] = data ;
928928 } ZEND_HASH_FOREACH_END ();
929929
930- MAKE_STD_ZVAL (z_argarray );
931930 MAKE_STD_ZVAL (z_tmp_array );
932931 array_init (z_tmp_array );
933932
@@ -937,6 +936,7 @@ PHP_METHOD(RedisArray, mget)
937936 if (!argc_each [n ]) continue ;
938937
939938 /* copy args for MGET call on node. */
939+ MAKE_STD_ZVAL (z_argarray );
940940 array_init (z_argarray );
941941
942942 for (i = 0 ; i < argc ; ++ i ) {
@@ -997,7 +997,6 @@ PHP_METHOD(RedisArray, mget)
997997 }
998998
999999 /* cleanup */
1000- PHPREDIS_FREE_ZVAL (z_argarray );
10011000 PHPREDIS_FREE_ZVAL (z_tmp_array );
10021001 efree (argv );
10031002 efree (pos );
@@ -1008,7 +1007,7 @@ PHP_METHOD(RedisArray, mget)
10081007/* MSET will distribute the call to several nodes and regroup the values. */
10091008PHP_METHOD (RedisArray , mset )
10101009{
1011- zval * object , * z_keys , z_argarray , * data , z_ret , * * argv ;
1010+ zval * object , * z_keys , * z_argarray , * data , * z_ret , * * argv , * z_tmp ;
10121011 int i = 0 , n ;
10131012 RedisArray * ra ;
10141013 int * pos , argc , * argc_each ;
@@ -1072,45 +1071,46 @@ PHP_METHOD(RedisArray, mset)
10721071
10731072 int found = 0 ;
10741073
1074+ /* Array for calling MSET */
1075+ MAKE_STD_ZVAL (z_argarray );
1076+ array_init (z_argarray );
1077+
10751078 /* copy args */
1076- array_init (& z_argarray );
10771079 for (i = 0 ; i < argc ; ++ i ) {
10781080 if (pos [i ] != n ) continue ;
10791081
1080- zval zv , * z_tmp = & zv ;
1081- #if (PHP_MAJOR_VERSION < 7 )
10821082 MAKE_STD_ZVAL (z_tmp );
1083- #endif
10841083 ZVAL_ZVAL (z_tmp , argv [i ], 1 , 0 );
1085- add_assoc_zval_ex (& z_argarray , keys [i ], key_lens [i ], z_tmp );
1084+ add_assoc_zval_ex (z_argarray , keys [i ], key_lens [i ], z_tmp );
10861085 found ++ ;
10871086 }
10881087
10891088 if (!found ) {
1090- zval_dtor ( & z_argarray );
1089+ PHPREDIS_FREE_ZVAL ( z_argarray );
10911090 continue ; /* don't run empty MSETs */
10921091 }
10931092
10941093 if (ra -> index ) { /* add MULTI */
10951094 ra_index_multi (& ra -> redis [n ], MULTI TSRMLS_CC );
10961095 }
10971096
1098- zval z_fun ;
1099-
1100- /* prepare call */
1101- ZVAL_STRINGL (& z_fun , "MSET" , 4 );
1097+ /* Prepare MSET call */
1098+ zval z_mset ;
1099+ ZVAL_STRINGL (& z_mset , "MSET" , 4 );
11021100
11031101 /* call */
1104- call_user_function (& redis_ce -> function_table , & ra -> redis [n ], & z_fun , & z_ret , 1 , & z_argarray );
1105- zval_dtor (& z_fun );
1106- zval_dtor (& z_ret );
1102+ MAKE_STD_ZVAL (z_ret );
1103+ call_user_function (& redis_ce -> function_table , & ra -> redis [n ], & z_mset , z_ret , 1 , z_argarray );
1104+ zval_dtor (& z_mset );
1105+ PHPREDIS_FREE_ZVAL (z_ret );
11071106
11081107 if (ra -> index ) {
1109- ra_index_keys (& z_argarray , & ra -> redis [n ] TSRMLS_CC ); /* use SADD to add keys to node index */
1108+ ra_index_keys (z_argarray , & ra -> redis [n ] TSRMLS_CC ); /* use SADD to add keys to node index */
11101109 ra_index_exec (& ra -> redis [n ], NULL , 0 TSRMLS_CC ); /* run EXEC */
11111110 }
11121111
1113- zval_dtor (& z_argarray );
1112+ /* Free up our MSET args */
1113+ PHPREDIS_FREE_ZVAL (z_argarray );
11141114 }
11151115
11161116 /* Free any keys that we needed to allocate memory for, because they weren't strings */
0 commit comments