Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cluster_library.c27
-rw-r--r--library.c34
-rw-r--r--library.h2
-rw-r--r--redis_commands.c8
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);
diff --git a/library.c b/library.c
index 5767c3f9..2e7c611c 100644
--- a/library.c
+++ b/library.c
@@ -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:
diff --git a/library.h b/library.h
index b7d9d346..c3a248c2 100644
--- a/library.h
+++ b/library.h
@@ -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);