Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f2711e3

Browse files
committed
Update calls to igbinary, API has changed for PHP 7
1 parent 9cb9d07 commit f2711e3

File tree

4 files changed

+30
-41
lines changed

4 files changed

+30
-41
lines changed

cluster_library.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,18 +1441,18 @@ PHP_REDIS_API void cluster_bulk_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster
14411441
}
14421442

14431443
if (CLUSTER_IS_ATOMIC(c)) {
1444-
if (redis_unserialize(c->flags, resp, c->reply_len, &return_value
1444+
if (redis_unserialize(c->flags, resp, c->reply_len, return_value
14451445
TSRMLS_CC) == 0)
14461446
{
14471447
CLUSTER_RETURN_STRING(c, resp, c->reply_len);
14481448
} else {
14491449
efree(resp);
14501450
}
14511451
} else {
1452-
zval *z = NULL;
1452+
zval z;
14531453
if (redis_unserialize(c->flags, resp, c->reply_len, &z TSRMLS_CC)) {
14541454
efree(resp);
1455-
add_next_index_zval(&c->multi_resp, z);
1455+
add_next_index_zval(&c->multi_resp, &z);
14561456
} else {
14571457
add_next_index_stringl(&c->multi_resp, resp, c->reply_len);
14581458
}
@@ -2229,9 +2229,9 @@ int mbulk_resp_loop(RedisSock *redis_sock, zval *z_result,
22292229
line = redis_sock_read(redis_sock, &line_len TSRMLS_CC);
22302230

22312231
if (line != NULL) {
2232-
zval *z = NULL;
2232+
zval z;
22332233
if(redis_unserialize(redis_sock, line, line_len, &z TSRMLS_CC)==1) {
2234-
add_next_index_zval(z_result, z);
2234+
add_next_index_zval(z_result, &z);
22352235
efree(line);
22362236
} else {
22372237
add_next_index_stringl(z_result, line, line_len);
@@ -2270,9 +2270,9 @@ int mbulk_resp_loop_zipstr(RedisSock *redis_sock, zval *z_result,
22702270
key_len = line_len;
22712271
} else {
22722272
/* Attempt serialization */
2273-
zval *z = NULL;
2273+
zval z;
22742274
if(redis_unserialize(redis_sock, line, line_len, &z TSRMLS_CC)==1) {
2275-
add_assoc_zval(z_result, key, z);
2275+
add_assoc_zval(z_result, key, &z);
22762276
efree(line);
22772277
} else {
22782278
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,
23062306
key = line;
23072307
key_len = line_len;
23082308
} else {
2309-
zval *z = NULL;
2309+
zval z;
23102310
if (redis_unserialize(redis_sock,key,key_len, &z TSRMLS_CC)) {
2311-
convert_to_string(z);
2312-
add_assoc_double_ex(z_result, Z_STRVAL_P(z), 1+Z_STRLEN_P(z), atof(line));
2313-
zval_dtor(z);
2314-
efree(z);
2311+
convert_to_string(&z);
2312+
add_assoc_double_ex(z_result, Z_STRVAL(z), 1+Z_STRLEN(z), atof(line));
2313+
zval_dtor(&z);
23152314
} else {
23162315
add_assoc_double_ex(z_result, key, 1+key_len, atof(line));
23172316
}
@@ -2339,11 +2338,11 @@ int mbulk_resp_loop_assoc(RedisSock *redis_sock, zval *z_result,
23392338
line = redis_sock_read(redis_sock, &line_len TSRMLS_CC);
23402339

23412340
if(line != NULL) {
2342-
zval *z = NULL;
2341+
zval z;
23432342
if(redis_unserialize(redis_sock, line, line_len, &z TSRMLS_CC)==1) {
23442343
efree(line);
23452344
add_assoc_zval_ex(z_result,Z_STRVAL_P(z_keys[i]),
2346-
1+Z_STRLEN_P(z_keys[i]), z);
2345+
1+Z_STRLEN_P(z_keys[i]), &z);
23472346
} else {
23482347
add_assoc_stringl_ex(z_result, Z_STRVAL_P(z_keys[i]),
23492348
1+Z_STRLEN_P(z_keys[i]), line, line_len);

library.c

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,18 +1391,17 @@ PHP_REDIS_API void redis_string_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock
13911391
RETURN_FALSE;
13921392
}
13931393
IF_MULTI_OR_PIPELINE() {
1394-
zval z, *z_p;
1395-
z_p = &z;
1396-
if(redis_unserialize(redis_sock, response, response_len, &z_p) == 1)
1394+
zval z;
1395+
if(redis_unserialize(redis_sock, response, response_len, &z) == 1)
13971396
{
13981397
efree(response);
1399-
add_next_index_zval(z_tab, z_p);
1398+
add_next_index_zval(z_tab, &z);
14001399
} else {
14011400
add_next_index_stringl(z_tab, response, response_len);
14021401
}
14031402
} else {
14041403
if(redis_unserialize(redis_sock, response, response_len,
1405-
&return_value TSRMLS_CC) == 0)
1404+
return_value TSRMLS_CC) == 0)
14061405
{
14071406
RETURN_STRINGL(response, response_len);
14081407
} else {
@@ -1851,8 +1850,7 @@ redis_mbulk_reply_loop(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
18511850
while(count > 0) {
18521851
line = redis_sock_read(redis_sock, &len TSRMLS_CC);
18531852
if (line != NULL) {
1854-
zval z, *z_p;
1855-
z_p = &z;
1853+
zval z;
18561854
int unwrap;
18571855

18581856
/* We will attempt unserialization, if we're unserializing everything,
@@ -1862,9 +1860,9 @@ redis_mbulk_reply_loop(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
18621860
(unserialize == UNSERIALIZE_KEYS && count % 2 == 0) ||
18631861
(unserialize == UNSERIALIZE_VALS && count % 2 != 0);
18641862

1865-
if (unwrap && redis_unserialize(redis_sock, line, len, &z_p TSRMLS_CC)) {
1863+
if (unwrap && redis_unserialize(redis_sock, line, len, &z TSRMLS_CC)) {
18661864
efree(line);
1867-
add_next_index_zval(z_tab, z_p);
1865+
add_next_index_zval(z_tab, &z);
18681866
} else {
18691867
add_next_index_stringl(z_tab, line, len);
18701868
}
@@ -1914,11 +1912,10 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
19141912
for(i = 0; i < numElems; ++i) {
19151913
response = redis_sock_read(redis_sock, &response_len TSRMLS_CC);
19161914
if(response != NULL) {
1917-
zval z, *z_p;
1918-
z_p = &z;
1919-
if(redis_unserialize(redis_sock, response, response_len, &z_p) == 1) {
1915+
zval z;
1916+
if(redis_unserialize(redis_sock, response, response_len, &z) == 1) {
19201917
efree(response);
1921-
add_assoc_zval_ex(&z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), z_p);
1918+
add_assoc_zval_ex(&z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), &z);
19221919
} else {
19231920
add_assoc_stringl_ex(&z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), response, response_len);
19241921
}
@@ -2032,7 +2029,7 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, size_t *val_len
20322029

20332030
case REDIS_SERIALIZER_IGBINARY:
20342031
#ifdef HAVE_REDIS_IGBINARY
2035-
if(igbinary_serialize(&val8, (size_t *)&sz, z TSRMLS_CC) == 0) {
2032+
if(igbinary_serialize(&val8, &sz, z TSRMLS_CC) == 0) {
20362033
*val = (char*)val8;
20372034
*val_len = (int)sz;
20382035
return 0;
@@ -2045,7 +2042,7 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, size_t *val_len
20452042

20462043
PHP_REDIS_API int
20472044
redis_unserialize(RedisSock* redis_sock, const char *val, int val_len,
2048-
zval **return_value TSRMLS_DC)
2045+
zval *return_value TSRMLS_DC)
20492046
{
20502047

20512048
php_unserialize_data_t var_hash;
@@ -2057,18 +2054,13 @@ redis_unserialize(RedisSock* redis_sock, const char *val, int val_len,
20572054

20582055
case REDIS_SERIALIZER_PHP:
20592056
PHP_VAR_UNSERIALIZE_INIT(var_hash);
2060-
if(!php_var_unserialize(*return_value, (const unsigned char**)&val,
2057+
if(!php_var_unserialize(return_value, (const unsigned char**)&val,
20612058
(const unsigned char*)val + val_len, &var_hash TSRMLS_CC)) {
20622059
ret = 0;
20632060
} else {
20642061
ret = 1;
20652062
}
2066-
#if ZEND_MODULE_API_NO >= 20100000
20672063
PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
2068-
#else
2069-
var_destroy(&var_hash);
2070-
#endif
2071-
20722064
return ret;
20732065

20742066
case REDIS_SERIALIZER_IGBINARY:

library.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ PHP_REDIS_API int
6565
redis_key_prefix(RedisSock *redis_sock, char **key, size_t *key_len);
6666

6767
PHP_REDIS_API int
68-
redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval **return_value TSRMLS_DC);
68+
redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval *return_value TSRMLS_DC);
6969

7070
PHP_REDIS_API void redis_free_socket(RedisSock *redis_sock);
7171
PHP_REDIS_API void redis_send_discard(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock);

redis_commands.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3029,18 +3029,16 @@ void redis_unserialize_handler(INTERNAL_FUNCTION_PARAMETERS,
30293029

30303030
// We only need to attempt unserialization if we have a serializer running
30313031
if(redis_sock->serializer != REDIS_SERIALIZER_NONE) {
3032-
zval z_ret, *z_ret_p;
3033-
z_ret_p = &z_ret;
3034-
if(redis_unserialize(redis_sock, value, value_len, &z_ret_p
3035-
TSRMLS_CC) == 0)
3032+
zval z_ret;
3033+
if(redis_unserialize(redis_sock, value, value_len, &z_ret TSRMLS_CC) == 0)
30363034
{
30373035
// Badly formed input, throw an execption
30383036
zend_throw_exception(ex,
30393037
"Invalid serialized data, or unserialization error",
30403038
0 TSRMLS_CC);
30413039
RETURN_FALSE;
30423040
}
3043-
RETURN_ZVAL(z_ret_p, 0, 1);
3041+
RETURN_ZVAL(&z_ret, 0, 1);
30443042
} else {
30453043
// Just return the value that was passed to us
30463044
RETURN_STRINGL(value, value_len);

0 commit comments

Comments
 (0)