Skip to content

Commit ee56458

Browse files
authored
Merge pull request phpredis#1644 from phpredis/issue-1643
Issue phpredis#1643
2 parents c0db75b + 3a622a0 commit ee56458

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

library.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,6 +1211,9 @@ redis_mbulk_reply_zipped(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
12111211
} else {
12121212
add_next_index_bool(z_tab, 0);
12131213
}
1214+
if (*inbuf == TYPE_ERR) {
1215+
redis_sock_set_err(redis_sock, inbuf + 1, len - 1);
1216+
}
12141217
return -1;
12151218
}
12161219
numElems = atoi(inbuf+1);
@@ -2112,16 +2115,19 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
21122115
zval *z_keys = ctx;
21132116

21142117
if (redis_sock_gets(redis_sock, inbuf, sizeof(inbuf) - 1, &len) < 0) {
2115-
return -1;
2118+
goto failure;
21162119
}
21172120

2118-
if(inbuf[0] != '*') {
2121+
if (*inbuf != TYPE_MULTIBULK) {
21192122
if (IS_ATOMIC(redis_sock)) {
21202123
RETVAL_FALSE;
21212124
} else {
21222125
add_next_index_bool(z_tab, 0);
21232126
}
2124-
return -1;
2127+
if (*inbuf == TYPE_ERR) {
2128+
redis_sock_set_err(redis_sock, inbuf + 1, len - 1);
2129+
}
2130+
goto failure;
21252131
}
21262132
numElems = atoi(inbuf+1);
21272133
zval z_multi_result;
@@ -2151,7 +2157,15 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
21512157
} else {
21522158
add_next_index_zval(z_tab, &z_multi_result);
21532159
}
2154-
return 0;
2160+
return SUCCESS;
2161+
failure:
2162+
if (z_keys != NULL) {
2163+
for (i = 0; Z_TYPE(z_keys[i]) != IS_NULL; ++i) {
2164+
zval_dtor(&z_keys[i]);
2165+
}
2166+
efree(z_keys);
2167+
}
2168+
return FAILURE;
21552169
}
21562170

21572171
/**

0 commit comments

Comments
 (0)