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

Skip to content

Commit 99335d6

Browse files
committed
Don't use convert_to_string in redis_hmget_cmd
1 parent 345fc7f commit 99335d6

3 files changed

Lines changed: 14 additions & 13 deletions

File tree

cluster_library.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2435,6 +2435,7 @@ int mbulk_resp_loop_assoc(RedisSock *redis_sock, zval *z_result,
24352435

24362436
// Loop while we've got replies
24372437
while(count--) {
2438+
zend_string *zstr = zval_get_string(&z_keys[i]);
24382439
line = redis_sock_read(redis_sock, &line_len TSRMLS_CC);
24392440

24402441
if(line != NULL) {
@@ -2444,19 +2445,17 @@ int mbulk_resp_loop_assoc(RedisSock *redis_sock, zval *z_result,
24442445
MAKE_STD_ZVAL(z);
24452446
*z = zv;
24462447
#endif
2447-
add_assoc_zval_ex(z_result,Z_STRVAL(z_keys[i]),
2448-
Z_STRLEN(z_keys[i]), z);
2448+
add_assoc_zval_ex(z_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), z);
24492449
} else {
2450-
add_assoc_stringl_ex(z_result, Z_STRVAL(z_keys[i]),
2451-
Z_STRLEN(z_keys[i]), line, line_len);
2450+
add_assoc_stringl_ex(z_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), line, line_len);
24522451
}
24532452
efree(line);
24542453
} else {
2455-
add_assoc_bool_ex(z_result, Z_STRVAL(z_keys[i]),
2456-
Z_STRLEN(z_keys[i]), 0);
2454+
add_assoc_bool_ex(z_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), 0);
24572455
}
24582456

24592457
// Clean up key context
2458+
zend_string_release(zstr);
24602459
zval_dtor(&z_keys[i]);
24612460

24622461
// Move to the next key

library.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,6 +1705,7 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
17051705
array_init(z_multi_result); /* pre-allocate array for multi's results. */
17061706

17071707
for(i = 0; i < numElems; ++i) {
1708+
zend_string *zstr = zval_get_string(&z_keys[i]);
17081709
response = redis_sock_read(redis_sock, &response_len TSRMLS_CC);
17091710
if(response != NULL) {
17101711
zval zv0, *z = &zv0;
@@ -1713,22 +1714,23 @@ PHP_REDIS_API int redis_mbulk_reply_assoc(INTERNAL_FUNCTION_PARAMETERS, RedisSoc
17131714
MAKE_STD_ZVAL(z);
17141715
*z = zv0;
17151716
#endif
1716-
add_assoc_zval_ex(z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), z);
1717+
add_assoc_zval_ex(z_multi_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), z);
17171718
} else {
1718-
add_assoc_stringl_ex(z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), response, response_len);
1719+
add_assoc_stringl_ex(z_multi_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), response, response_len);
17191720
}
17201721
efree(response);
17211722
} else {
1722-
add_assoc_bool_ex(z_multi_result, Z_STRVAL(z_keys[i]), Z_STRLEN(z_keys[i]), 0);
1723+
add_assoc_bool_ex(z_multi_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), 0);
17231724
}
1725+
zend_string_release(zstr);
17241726
zval_dtor(&z_keys[i]);
17251727
}
17261728
efree(z_keys);
17271729

17281730
IF_NOT_ATOMIC() {
17291731
add_next_index_zval(z_tab, z_multi_result);
17301732
} else {
1731-
RETVAL_ZVAL(z_multi_result, 0, 1);
1733+
RETVAL_ZVAL(z_multi_result, 1, 0);
17321734
}
17331735
return 0;
17341736
}

redis_commands.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,7 +1389,6 @@ int redis_hmget_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
13891389
) {
13901390
// Copy into our member array
13911391
ZVAL_ZVAL(&z_mems[valid], z_mem, 1, 0);
1392-
convert_to_string(&z_mems[valid]);
13931392

13941393
// Increment the member count to actually send
13951394
valid++;
@@ -1416,8 +1415,9 @@ int redis_hmget_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
14161415

14171416
// Iterate over members, appending as arguments
14181417
for(i=0;i<valid;i++) {
1419-
redis_cmd_append_sstr(&cmdstr, Z_STRVAL(z_mems[i]),
1420-
Z_STRLEN(z_mems[i]));
1418+
zend_string *zstr = zval_get_string(&z_mems[i]);
1419+
redis_cmd_append_sstr(&cmdstr, ZSTR_VAL(zstr), ZSTR_LEN(zstr));
1420+
zend_string_release(zstr);
14211421
}
14221422

14231423
// Set our slot

0 commit comments

Comments
 (0)