@@ -387,10 +387,9 @@ PHP_REDIS_API int redis_unsubscribe_response(INTERNAL_FUNCTION_PARAMETERS,
387
387
void * ctx )
388
388
{
389
389
subscribeContext * sctx = (subscribeContext * )ctx ;
390
- zval * z_chan , * z_ret , z_resp ;
390
+ zval * z_chan , zv , * z_ret = & zv , z_resp ;
391
391
int i ;
392
392
393
- MAKE_STD_ZVAL (z_ret );
394
393
array_init (z_ret );
395
394
396
395
for (i = 0 ; i < sctx -> argc ; i ++ ) {
@@ -399,7 +398,6 @@ PHP_REDIS_API int redis_unsubscribe_response(INTERNAL_FUNCTION_PARAMETERS,
399
398
(z_chan = zend_hash_index_find (Z_ARRVAL (z_resp ), 1 )) == NULL
400
399
) {
401
400
zval_dtor (z_ret );
402
- efree (z_ret );
403
401
return -1 ;
404
402
}
405
403
@@ -1204,10 +1202,9 @@ static void array_zip_values_and_scores(RedisSock *redis_sock, zval *z_tab,
1204
1202
int decode TSRMLS_DC )
1205
1203
{
1206
1204
1207
- zval * z_ret ;
1205
+ zval zv , * z_ret = & zv ;
1208
1206
HashTable * keytable ;
1209
1207
1210
- MAKE_STD_ZVAL (z_ret );
1211
1208
array_init (z_ret );
1212
1209
keytable = Z_ARRVAL_P (z_tab );
1213
1210
@@ -1255,11 +1252,7 @@ static void array_zip_values_and_scores(RedisSock *redis_sock, zval *z_tab,
1255
1252
1256
1253
/* replace */
1257
1254
zval_dtor (z_tab );
1258
- * z_tab = * z_ret ;
1259
- zval_copy_ctor (z_tab );
1260
- zval_dtor (z_ret );
1261
-
1262
- efree (z_ret );
1255
+ ZVAL_ZVAL (z_tab , z_ret , 1 , 0 );
1263
1256
}
1264
1257
1265
1258
static int
@@ -1268,7 +1261,6 @@ redis_mbulk_reply_zipped(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
1268
1261
{
1269
1262
char inbuf [1024 ];
1270
1263
int numElems ;
1271
- zval * z_multi_result ;
1272
1264
1273
1265
if (-1 == redis_check_eof (redis_sock , 0 TSRMLS_CC )) {
1274
1266
return -1 ;
@@ -1288,7 +1280,12 @@ redis_mbulk_reply_zipped(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
1288
1280
return -1 ;
1289
1281
}
1290
1282
numElems = atoi (inbuf + 1 );
1283
+ #if (PHP_MAJOR_VERSION < 7 )
1284
+ zval * z_multi_result ;
1291
1285
MAKE_STD_ZVAL (z_multi_result );
1286
+ #else
1287
+ zval zv , * z_multi_result = & zv ;
1288
+ #endif
1292
1289
array_init (z_multi_result ); /* pre-allocate array for multi's results. */
1293
1290
1294
1291
/* Grab our key, value, key, value array */
@@ -1301,10 +1298,7 @@ redis_mbulk_reply_zipped(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
1301
1298
IF_MULTI_OR_PIPELINE () {
1302
1299
add_next_index_zval (z_tab , z_multi_result );
1303
1300
} else {
1304
- * return_value = * z_multi_result ;
1305
- zval_copy_ctor (return_value );
1306
- zval_dtor (z_multi_result );
1307
- efree (z_multi_result );
1301
+ RETVAL_ZVAL (z_multi_result , 0 , 1 );
1308
1302
}
1309
1303
1310
1304
return 0 ;
@@ -1753,7 +1747,6 @@ PHP_REDIS_API int redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAMETERS,
1753
1747
{
1754
1748
char inbuf [1024 ];
1755
1749
int numElems , err_len ;
1756
- zval * z_multi_result ;
1757
1750
1758
1751
if (-1 == redis_check_eof (redis_sock , 0 TSRMLS_CC )) {
1759
1752
return -1 ;
@@ -1778,7 +1771,12 @@ PHP_REDIS_API int redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAMETERS,
1778
1771
return -1 ;
1779
1772
}
1780
1773
numElems = atoi (inbuf + 1 );
1774
+ #if (PHP_MAJOR_VERSION < 7 )
1775
+ zval * z_multi_result ;
1781
1776
MAKE_STD_ZVAL (z_multi_result );
1777
+ #else
1778
+ zval zv , * z_multi_result = & zv ;
1779
+ #endif
1782
1780
array_init (z_multi_result ); /* pre-allocate array for multi's results. */
1783
1781
1784
1782
redis_mbulk_reply_loop (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock ,
@@ -1787,8 +1785,7 @@ PHP_REDIS_API int redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAMETERS,
1787
1785
IF_MULTI_OR_PIPELINE () {
1788
1786
add_next_index_zval (z_tab , z_multi_result );
1789
1787
} else {
1790
- * return_value = * z_multi_result ;
1791
- efree (z_multi_result );
1788
+ RETVAL_ZVAL (z_multi_result , 0 , 1 );
1792
1789
}
1793
1790
/*zval_copy_ctor(return_value); */
1794
1791
return 0 ;
@@ -1800,7 +1797,6 @@ PHP_REDIS_API int redis_mbulk_reply_raw(INTERNAL_FUNCTION_PARAMETERS, RedisSock
1800
1797
{
1801
1798
char inbuf [1024 ];
1802
1799
int numElems , err_len ;
1803
- zval * z_multi_result ;
1804
1800
1805
1801
if (-1 == redis_check_eof (redis_sock , 0 TSRMLS_CC )) {
1806
1802
return -1 ;
@@ -1824,7 +1820,12 @@ PHP_REDIS_API int redis_mbulk_reply_raw(INTERNAL_FUNCTION_PARAMETERS, RedisSock
1824
1820
return -1 ;
1825
1821
}
1826
1822
numElems = atoi (inbuf + 1 );
1823
+ #if (PHP_MAJOR_VERSION < 7 )
1824
+ zval * z_multi_result ;
1827
1825
MAKE_STD_ZVAL (z_multi_result );
1826
+ #else
1827
+ zval zv , * z_multi_result = & zv ;
1828
+ #endif
1828
1829
array_init (z_multi_result ); /* pre-allocate array for multi's results. */
1829
1830
1830
1831
redis_mbulk_reply_loop (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock ,
@@ -1833,8 +1834,7 @@ PHP_REDIS_API int redis_mbulk_reply_raw(INTERNAL_FUNCTION_PARAMETERS, RedisSock
1833
1834
IF_MULTI_OR_PIPELINE () {
1834
1835
add_next_index_zval (z_tab , z_multi_result );
1835
1836
} else {
1836
- * return_value = * z_multi_result ;
1837
- efree (z_multi_result );
1837
+ RETVAL_ZVAL (z_multi_result , 0 , 1 );
1838
1838
}
1839
1839
/*zval_copy_ctor(return_value); */
1840
1840
return 0 ;
@@ -1881,7 +1881,6 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
1881
1881
char inbuf [1024 ], * response ;
1882
1882
int response_len ;
1883
1883
int i , numElems ;
1884
- zval * z_multi_result ;
1885
1884
1886
1885
zval * z_keys = ctx ;
1887
1886
@@ -1903,7 +1902,12 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
1903
1902
return -1 ;
1904
1903
}
1905
1904
numElems = atoi (inbuf + 1 );
1905
+ #if (PHP_MAJOR_VERSION < 7 )
1906
+ zval * z_multi_result ;
1906
1907
MAKE_STD_ZVAL (z_multi_result );
1908
+ #else
1909
+ zval zv , * z_multi_result = & zv ;
1910
+ #endif
1907
1911
array_init (z_multi_result ); /* pre-allocate array for multi's results. */
1908
1912
1909
1913
for (i = 0 ; i < numElems ; ++ i ) {
@@ -1926,11 +1930,7 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
1926
1930
IF_MULTI_OR_PIPELINE () {
1927
1931
add_next_index_zval (z_tab , z_multi_result );
1928
1932
} else {
1929
- * return_value = * z_multi_result ;
1930
- zval_copy_ctor (return_value );
1931
- INIT_PZVAL (return_value );
1932
- zval_dtor (z_multi_result );
1933
- efree (z_multi_result );
1933
+ RETVAL_ZVAL (z_multi_result , 0 , 1 );
1934
1934
}
1935
1935
return 0 ;
1936
1936
}
@@ -1996,27 +1996,25 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, int *val_len
1996
1996
case IS_STRING :
1997
1997
* val = Z_STRVAL_P (z );
1998
1998
* val_len = Z_STRLEN_P (z );
1999
- return 0 ;
1999
+ break ;
2000
2000
2001
2001
case IS_OBJECT :
2002
2002
* val = "Object" ;
2003
2003
* val_len = 6 ;
2004
- return 0 ;
2004
+ break ;
2005
2005
2006
2006
case IS_ARRAY :
2007
2007
* val = "Array" ;
2008
2008
* val_len = 5 ;
2009
- return 0 ;
2009
+ break ;
2010
2010
2011
2011
default : /* copy */
2012
- z_copy = * z ;
2013
- zval_copy_ctor (& z_copy );
2012
+ ZVAL_ZVAL (& z_copy , z , 1 , 0 );
2014
2013
convert_to_string (& z_copy );
2015
2014
* val = Z_STRVAL (z_copy );
2016
2015
* val_len = Z_STRLEN (z_copy );
2017
2016
}
2018
- return 1 ;
2019
-
2017
+ break ;
2020
2018
case REDIS_SERIALIZER_PHP :
2021
2019
2022
2020
#if ZEND_MODULE_API_NO >= 20100000
@@ -2226,7 +2224,7 @@ redis_read_reply_type(RedisSock *redis_sock, REDIS_REPLY_TYPE *reply_type,
2226
2224
*/
2227
2225
PHP_REDIS_API int
2228
2226
redis_read_variant_line (RedisSock * redis_sock , REDIS_REPLY_TYPE reply_type ,
2229
- zval * * z_ret TSRMLS_DC )
2227
+ zval * z_ret TSRMLS_DC )
2230
2228
{
2231
2229
// Buffer to read our single line reply
2232
2230
char inbuf [1024 ];
@@ -2247,34 +2245,34 @@ redis_read_variant_line(RedisSock *redis_sock, REDIS_REPLY_TYPE reply_type,
2247
2245
redis_sock_set_err (redis_sock , inbuf , line_size );
2248
2246
2249
2247
/* Set our response to FALSE */
2250
- ZVAL_FALSE (* z_ret );
2248
+ ZVAL_FALSE (z_ret );
2251
2249
} else {
2252
2250
/* Set our response to TRUE */
2253
- ZVAL_TRUE (* z_ret );
2251
+ ZVAL_TRUE (z_ret );
2254
2252
}
2255
2253
2256
2254
return 0 ;
2257
2255
}
2258
2256
2259
2257
PHP_REDIS_API int
2260
- redis_read_variant_bulk (RedisSock * redis_sock , int size , zval * * z_ret
2258
+ redis_read_variant_bulk (RedisSock * redis_sock , int size , zval * z_ret
2261
2259
TSRMLS_DC )
2262
2260
{
2263
2261
// Attempt to read the bulk reply
2264
2262
char * bulk_resp = redis_sock_read_bulk_reply (redis_sock , size TSRMLS_CC );
2265
2263
2266
2264
/* Set our reply to FALSE on failure, and the string on success */
2267
2265
if (bulk_resp == NULL ) {
2268
- ZVAL_FALSE (* z_ret );
2266
+ ZVAL_FALSE (z_ret );
2269
2267
return -1 ;
2270
2268
}
2271
- ZVAL_STRINGL (* z_ret , bulk_resp , size );
2269
+ ZVAL_STRINGL (z_ret , bulk_resp , size );
2272
2270
efree (bulk_resp );
2273
2271
return 0 ;
2274
2272
}
2275
2273
2276
2274
PHP_REDIS_API int
2277
- redis_read_multibulk_recursive (RedisSock * redis_sock , int elements , zval * * z_ret
2275
+ redis_read_multibulk_recursive (RedisSock * redis_sock , int elements , zval * z_ret
2278
2276
TSRMLS_DC )
2279
2277
{
2280
2278
long reply_info ;
@@ -2298,29 +2296,29 @@ redis_read_multibulk_recursive(RedisSock *redis_sock, int elements, zval **z_ret
2298
2296
case TYPE_ERR :
2299
2297
case TYPE_LINE :
2300
2298
ALLOC_INIT_ZVAL (z_subelem );
2301
- redis_read_variant_line (redis_sock , reply_type , & z_subelem
2299
+ redis_read_variant_line (redis_sock , reply_type , z_subelem
2302
2300
TSRMLS_CC );
2303
- add_next_index_zval (* z_ret , z_subelem );
2301
+ add_next_index_zval (z_ret , z_subelem );
2304
2302
break ;
2305
2303
case TYPE_INT :
2306
2304
// Add our long value
2307
- add_next_index_long (* z_ret , reply_info );
2305
+ add_next_index_long (z_ret , reply_info );
2308
2306
break ;
2309
2307
case TYPE_BULK :
2310
2308
// Init a zval for our bulk response, read and add it
2311
2309
ALLOC_INIT_ZVAL (z_subelem );
2312
- redis_read_variant_bulk (redis_sock , reply_info , & z_subelem
2310
+ redis_read_variant_bulk (redis_sock , reply_info , z_subelem
2313
2311
TSRMLS_CC );
2314
- add_next_index_zval (* z_ret , z_subelem );
2312
+ add_next_index_zval (z_ret , z_subelem );
2315
2313
break ;
2316
2314
case TYPE_MULTIBULK :
2317
2315
// Construct an array for our sub element, and add it,
2318
2316
// and recurse
2319
2317
ALLOC_INIT_ZVAL (z_subelem );
2320
2318
array_init (z_subelem );
2321
- add_next_index_zval (* z_ret , z_subelem );
2319
+ add_next_index_zval (z_ret , z_subelem );
2322
2320
redis_read_multibulk_recursive (redis_sock , reply_info ,
2323
- & z_subelem TSRMLS_CC );
2321
+ z_subelem TSRMLS_CC );
2324
2322
break ;
2325
2323
default :
2326
2324
// Stop the compiler from whinging
@@ -2342,28 +2340,30 @@ redis_read_variant_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
2342
2340
REDIS_REPLY_TYPE reply_type ;
2343
2341
long reply_info ;
2344
2342
//char *bulk_resp;
2345
- zval * z_ret ;
2346
2343
2347
2344
// Attempt to read our header
2348
2345
if (redis_read_reply_type (redis_sock ,& reply_type ,& reply_info TSRMLS_CC ) < 0 )
2349
2346
{
2350
2347
return -1 ;
2351
2348
}
2352
2349
2353
- /* Our return ZVAL */
2354
- MAKE_STD_ZVAL (z_ret );
2355
-
2350
+ #if (PHP_MAJOR_VERSION < 7 )
2351
+ zval * z_ret ;
2352
+ MAKE_STD_ZVAL (z_ret );
2353
+ #else
2354
+ zval zv , * z_ret = & zv ;
2355
+ #endif
2356
2356
/* Switch based on our top level reply type */
2357
2357
switch (reply_type ) {
2358
2358
case TYPE_ERR :
2359
2359
case TYPE_LINE :
2360
- redis_read_variant_line (redis_sock , reply_type , & z_ret TSRMLS_CC );
2360
+ redis_read_variant_line (redis_sock , reply_type , z_ret TSRMLS_CC );
2361
2361
break ;
2362
2362
case TYPE_INT :
2363
2363
ZVAL_LONG (z_ret , reply_info );
2364
2364
break ;
2365
2365
case TYPE_BULK :
2366
- redis_read_variant_bulk (redis_sock , reply_info , & z_ret TSRMLS_CC );
2366
+ redis_read_variant_bulk (redis_sock , reply_info , z_ret TSRMLS_CC );
2367
2367
break ;
2368
2368
case TYPE_MULTIBULK :
2369
2369
/* Initialize an array for our multi-bulk response */
@@ -2372,14 +2372,12 @@ redis_read_variant_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
2372
2372
// If we've got more than zero elements, parse our multi bulk
2373
2373
// response recursively
2374
2374
if (reply_info > -1 ) {
2375
- redis_read_multibulk_recursive (redis_sock , reply_info , & z_ret
2375
+ redis_read_multibulk_recursive (redis_sock , reply_info , z_ret
2376
2376
TSRMLS_CC );
2377
2377
}
2378
2378
break ;
2379
2379
default :
2380
2380
// Protocol error
2381
- zval_dtor (z_ret );
2382
- efree (z_ret );
2383
2381
zend_throw_exception_ex (redis_exception_ce , 0 TSRMLS_CC ,
2384
2382
"protocol error, got '%c' as reply-type byte\n" , reply_type );
2385
2383
return FAILURE ;
@@ -2389,10 +2387,7 @@ redis_read_variant_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
2389
2387
add_next_index_zval (z_tab , z_ret );
2390
2388
} else {
2391
2389
/* Set our return value */
2392
- * return_value = * z_ret ;
2393
- zval_copy_ctor (return_value );
2394
- zval_dtor (z_ret );
2395
- efree (z_ret );
2390
+ RETVAL_ZVAL (z_ret , 0 , 1 );
2396
2391
}
2397
2392
2398
2393
/* Success */
0 commit comments