@@ -937,7 +937,7 @@ PHPAPI void redis_string_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis
937
937
}
938
938
} else {
939
939
if (redis_unserialize (redis_sock , response , response_len , &
8000
return_value TSRMLS_CC ) == 0 ) {
940
- RETURN_STRINGL (response , response_len , 0 );
940
+ RETURN_STRINGL (response , response_len , 0 );
941
941
} else {
942
942
efree (response );
943
943
}
@@ -1497,7 +1497,7 @@ PHPAPI int
1497
1497
redis_unserialize (RedisSock * redis_sock , const char * val , int val_len , zval * * return_value TSRMLS_DC ) {
1498
1498
1499
1499
php_unserialize_data_t var_hash ;
1500
- int ret ;
1500
+ int ret , rv_free = 0 ;
1501
1501
1502
1502
switch (redis_sock -> serializer ) {
1503
1503
case REDIS_SERIALIZER_NONE :
@@ -1506,6 +1506,7 @@ redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **re
1506
1506
case REDIS_SERIALIZER_PHP :
1507
1507
if (!* return_value ) {
1508
1508
MAKE_STD_ZVAL (* return_value );
1509
+ rv_free = 1 ;
1509
1510
}
1510
1511
#if ZEND_MODULE_API_NO >= 20100000
1511
1512
PHP_VAR_UNSERIALIZE_INIT (var_hash );
@@ -1514,7 +1515,7 @@ redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **re
1514
1515
#endif
1515
1516
if (!php_var_unserialize (return_value , (const unsigned char * * )& val ,
1516
1517
(const unsigned char * )val + val_len , & var_hash TSRMLS_CC )) {
1517
- efree (* return_value );
1518
+ if ( rv_free == 1 ) efree (* return_value );
1518
1519
ret = 0 ;
1519
1520
} else {
1520
1521
ret = 1 ;
0 commit comments