@@ -808,7 +808,7 @@ PHPAPI void redis_string_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis
808
808
}
809
809
} else {
810
810
if (redis_unserialize (redis_sock , response , response_len , & return_value TSRMLS_CC ) == 0 ) {
811
- RETURN_STRINGL (response , response_len , 0 );
811
+ RETURN_STRINGL (response , response_len , 0 );
812
812
} else {
813
813
efree (response );
814
814
}
@@ -1367,7 +1367,7 @@ PHPAPI int
1367
1367
redis_unserialize (RedisSock * redis_sock , const char * val , int val_len , zval * * return_value TSRMLS_DC ) {
1368
1368
1369
1369
php_unserialize_data_t var_hash ;
1370
- int ret ;
1370
+ int ret , rv_free = 0 ;
1371
1371
1372
1372
switch (redis_sock -> serializer ) {
1373
1373
case REDIS_SERIALIZER_NONE :
@@ -1376,6 +1376,7 @@ redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **re
1376
1376
case REDIS_SERIALIZER_PHP :
1377
1377
if (!* return_value ) {
1378
1378
MAKE_STD_ZVAL (* return_value );
1379
+ rv_free = 1 ;
1379
1380
}
1380
1381
#if ZEND_MODULE_API_NO >= 20100000
1381
1382
PHP_VAR_UNSERIALIZE_INIT (var_hash );
@@ -1384,7 +1385,7 @@ redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **re
1384
1385
#endif
1385
1386
if (!php_var_unserialize (return_value , (const unsigned char * * )& val ,
1386
1387
(const unsigned char * )val + val_len , & var_hash TSRMLS_CC )) {
1387
- efree (* return_value );
1388
+ if ( rv_free == 1 ) efree (* return_value );
1388
1389
ret = 0 ;
1389
1390
} else {
1390
1391
ret = 1 ;
0 commit comments