diff options
-rw-r--r-- | cluster_library.c | 27 | ||||
-rw-r--r-- | library.c | 34 | ||||
-rw-r--r-- | library.h | 2 | ||||
-rw-r--r-- | redis_commands.c | 8 |
4 files changed, 30 insertions, 41 deletions
diff --git a/cluster_library.c b/cluster_library.c index 0c86793b..8ef0b53e 100644 --- a/cluster_library.c +++ b/cluster_library.c @@ -1441,7 +1441,7 @@ PHP_REDIS_API void cluster_bulk_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster } if (CLUSTER_IS_ATOMIC(c)) { - if (redis_unserialize(c->flags, resp, c->reply_len, &return_value + if (redis_unserialize(c->flags, resp, c->reply_len, return_value TSRMLS_CC) == 0) { CLUSTER_RETURN_STRING(c, resp, c->reply_len); @@ -1449,10 +1449,10 @@ PHP_REDIS_API void cluster_bulk_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster efree(resp); } } else { - zval *z = NULL; + zval z; if (redis_unserialize(c->flags, resp, c->reply_len, &z TSRMLS_CC)) { efree(resp); - add_next_index_zval(&c->multi_resp, z); + add_next_index_zval(&c->multi_resp, &z); } else { add_next_index_stringl(&c->multi_resp, resp, c->reply_len); } @@ -2229,9 +2229,9 @@ int mbulk_resp_loop(RedisSock *redis_sock, zval *z_result, line = redis_sock_read(redis_sock, &line_len TSRMLS_CC); if (line != NULL) { - zval *z = NULL; + zval z; if(redis_unserialize(redis_sock, line, line_len, &z TSRMLS_CC)==1) { - add_next_index_zval(z_result, z); + add_next_index_zval(z_result, &z); efree(line); } else { add_next_index_stringl(z_result, line, line_len); @@ -2270,9 +2270,9 @@ int mbulk_resp_loop_zipstr(RedisSock *redis_sock, zval *z_result, key_len = line_len; } else { /* Attempt serialization */ - zval *z = NULL; + zval z; if(redis_unserialize(redis_sock, line, line_len, &z TSRMLS_CC)==1) { - add_assoc_zval(z_result, key, z); + add_assoc_zval(z_result, key, &z); efree(line); } else { add_assoc_stringl_ex(z_result, key, 1+key_len, line, @@ -2306,12 +2306,11 @@ int mbulk_resp_loop_zipdbl(RedisSock *redis_sock, zval *z_result, key = line; key_len = line_len; } else { - zval *z = NULL; + zval z; if (redis_unserialize(redis_sock,key,key_len, &z TSRMLS_CC)) { - convert_to_string(z); - add_assoc_double_ex(z_result, Z_STRVAL_P(z), 1+Z_STRLEN_P(z), atof(line)); - zval_dtor(z); - efree(z); + convert_to_string(&z); + add_assoc_double_ex(z_result, Z_STRVAL(z), 1+Z_STRLEN(z), atof(line)); + zval_dtor(&z); } else { add_assoc_double_ex(z_result, key, 1+key_len, atof(line)); } @@ -2339,11 +2338,11 @@ int mbulk_resp_loop_assoc(RedisSock *redis_sock, zval *z_result, line = redis_sock_read(redis_sock, &line_len TSRMLS_CC); if(line != NULL) { - zval *z = NULL; + zval z; if(redis_unserialize(redis_sock, line, line_len, &z TSRMLS_CC)==1) { efree(line); add_assoc_zval_ex(z_result,Z_STRVAL_P(z_keys[i]), - 1+Z_STRLEN_P(z_keys[i]), z); + 1+Z_STRLEN_P(z_keys[i]), &z); } else { add_assoc_stringl_ex(z_result, Z_STRVAL_P(z_keys[i]), 1+Z_STRLEN_P(z_keys[i]), line, line_len); @@ -1391,18 +1391,17 @@ PHP_REDIS_API void redis_string_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock RETURN_FALSE; } IF_MULTI_OR_PIPELINE() { - zval z, *z_p; - z_p = &z; - if(redis_unserialize(redis_sock, response, response_len, &z_p) == 1) + zval z; + if(redis_unserialize(redis_sock, response, response_len, &z) == 1) { efree(response); - add_next_index_zval(z_tab, z_p); + add_next_index_zval(z_tab, &z); } else { add_next_index_stringl(z_tab, response, response_len); } } else { if(redis_unserialize(redis_sock, response, response_len, - &return_value TSRMLS_CC) == 0) + return_value TSRMLS_CC) == 0) { RETURN_STRINGL(response, response_len); } else { @@ -1851,8 +1850,7 @@ redis_mbulk_reply_loop(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, while(count > 0) { line = redis_sock_read(redis_sock, &len TSRMLS_CC); if (line != NULL) { - zval z, *z_p; - z_p = &z; + zval z; int unwrap; /* We will attempt unserialization, if we're unserializing everything, @@ -1862,9 +1860,9 @@ redis_mbulk_reply_loop(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, (unserialize == UNSERIALIZE_KEYS && count % 2 == 0) || (unserialize == UNSERIALIZE_VALS && count % 2 != 0); - if (unwrap && redis_unserialize(redis_sock, line, len, &z_p TSRMLS_CC)) { + if (unwrap && redis_unserialize(redis_sock, line, len, &z TSRMLS_CC)) { efree(line); - add_next_index_zval(z_tab, z_p); + add_next_index_zval(z_tab, &z); } else { add_next_index_stringl(z_tab, line, len); } @@ -1914,11 +1912,10 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc for(i = 0; i < numElems; ++i) { response = redis_sock_read(redis_sock, &response_len TSRMLS_CC); if(response != NULL) { - zval z, *z_p; - z_p = &z; - if(redis_unserialize(redis_sock, response, response_len, &z_p) == 1) { + zval z; + if(redis_unserialize(redis_sock, response, response_len, &z) == 1) { efree(response); - add_assoc_zval_ex(&z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), z_p); + add_assoc_zval_ex(&z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), &z); } else { add_assoc_stringl_ex(&z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), response, response_len); } @@ -2032,7 +2029,7 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, size_t *val_len case REDIS_SERIALIZER_IGBINARY: #ifdef HAVE_REDIS_IGBINARY - if(igbinary_serialize(&val8, (size_t *)&sz, z TSRMLS_CC) == 0) { + if(igbinary_serialize(&val8, &sz, z TSRMLS_CC) == 0) { *val = (char*)val8; *val_len = (int)sz; return 0; @@ -2045,7 +2042,7 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, size_t *val_len PHP_REDIS_API int redis_unserialize(RedisSock* redis_sock, const char *val, int val_len, - zval **return_value TSRMLS_DC) + zval *return_value TSRMLS_DC) { php_unserialize_data_t var_hash; @@ -2057,18 +2054,13 @@ redis_unserialize(RedisSock* redis_sock, const char *val, int val_len, case REDIS_SERIALIZER_PHP: PHP_VAR_UNSERIALIZE_INIT(var_hash); - if(!php_var_unserialize(*return_value, (const unsigned char**)&val, + if(!php_var_unserialize(return_value, (const unsigned char**)&val, (const unsigned char*)val + val_len, &var_hash TSRMLS_CC)) { ret = 0; } else { ret = 1; } -#if ZEND_MODULE_API_NO >= 20100000 PHP_VAR_UNSERIALIZE_DESTROY(var_hash); -#else - var_destroy(&var_hash); -#endif - return ret; case REDIS_SERIALIZER_IGBINARY: @@ -65,7 +65,7 @@ PHP_REDIS_API int redis_key_prefix(RedisSock *redis_sock, char **key, size_t *key_len); PHP_REDIS_API int -redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **return_value TSRMLS_DC); +redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval *return_value TSRMLS_DC); PHP_REDIS_API void redis_free_socket(RedisSock *redis_sock); PHP_REDIS_API void redis_send_discard(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock); diff --git a/redis_commands.c b/redis_commands.c index 4619db38..3040aada 100644 --- a/redis_commands.c +++ b/redis_commands.c @@ -3029,10 +3029,8 @@ void redis_unserialize_handler(INTERNAL_FUNCTION_PARAMETERS, // We only need to attempt unserialization if we have a serializer running if(redis_sock->serializer != REDIS_SERIALIZER_NONE) { - zval z_ret, *z_ret_p; - z_ret_p = &z_ret; - if(redis_unserialize(redis_sock, value, value_len, &z_ret_p - TSRMLS_CC) == 0) + zval z_ret; + if(redis_unserialize(redis_sock, value, value_len, &z_ret TSRMLS_CC) == 0) { // Badly formed input, throw an execption zend_throw_exception(ex, @@ -3040,7 +3038,7 @@ void redis_unserialize_handler(INTERNAL_FUNCTION_PARAMETERS, 0 TSRMLS_CC); RETURN_FALSE; } - RETURN_ZVAL(z_ret_p, 0, 1); + RETURN_ZVAL(&z_ret, 0, 1); } else { // Just return the value that was passed to us RETURN_STRINGL(value, value_len); |