Skip to content

Commit c9825cc

Browse files
committed
fix phpredis#1074 change redis_key_prefix to accept strlen_t
1 parent 04f1a40 commit c9825cc

File tree

6 files changed

+81
-69
lines changed

6 files changed

+81
-69
lines changed

cluster_library.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ static clusterKeyVal *cluster_dl_add_key(clusterDistList *dl, char *key,
418418
/* Add a key, returning a pointer to the entry where passed for easy adding
419419
* of values to match this key */
420420
int cluster_dist_add_key(redisCluster *c, HashTable *ht, char *key,
421-
int key_len, clusterKeyVal **kv)
421+
strlen_t key_len, clusterKeyVal **kv)
422422
{
423423
int key_free;
424424
short slot;

library.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -2118,7 +2118,7 @@ redis_unserialize(RedisSock* redis_sock, const char *val, int val_len,
21182118
}
21192119

21202120
PHP_REDIS_API int
2121-
redis_key_prefix(RedisSock *redis_sock, char **key, int *key_len) {
2121+
redis_key_prefix(RedisSock *redis_sock, char **key, strlen_t *key_len) {
21222122
int ret_len;
21232123
char *ret;
21242124

library.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ PHP_REDIS_API void redis_sock_set_err(RedisSock *redis_sock, const char *msg, in
6767
PHP_REDIS_API int
6868
redis_serialize(RedisSock *redis_sock, zval *z, char **val, int *val_len TSRMLS_DC);
6969
PHP_REDIS_API int
70-
redis_key_prefix(RedisSock *redis_sock, char **key, int *key_len);
70+
redis_key_prefix(RedisSock *redis_sock, char **key, strlen_t *key_len);
7171

7272
PHP_REDIS_API int
7373
redis_unserialize(RedisSock *redis_sock, const char *val, int val_len, zval *z_ret TSRMLS_DC);

redis.c

+10-9
Original file line numberDiff line numberDiff line change
@@ -1022,7 +1022,7 @@ PHP_METHOD(Redis, getMultiple)
10221022
ZEND_HASH_FOREACH_VAL(hash, z_ele) {
10231023
zend_string *zstr = zval_get_string(z_ele);
10241024
char *key = zstr->val;
1025-
int key_len = zstr->len;
1025+
strlen_t key_len = zstr->len;
10261026
/* Apply key prefix if necissary */
10271027
int key_free = redis_key_prefix(redis_sock, &key, &key_len);
10281028
/* Append this key to our command */
@@ -1460,7 +1460,7 @@ PHP_REDIS_API void generic_sort_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sort,
14601460
cmd_sizes[2] = 4;
14611461

14621462
/* Prefix our key if we need to */
1463-
key_free = redis_key_prefix(redis_sock, &key, (int *)&key_len);
1463+
key_free = redis_key_prefix(redis_sock, &key, &key_len);
14641464

14651465
/* second line, key */
14661466
cmd_sizes[3] = redis_cmd_format(&cmd_lines[3], "$%d", key_len);
@@ -1852,7 +1852,7 @@ generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, ResultCallback fun) {
18521852
keytable = Z_ARRVAL_P(z_array);
18531853
ZEND_HASH_FOREACH_KEY_VAL(keytable, idx, zkey, z_value_p) {
18541854
char *key, *val;
1855-
unsigned int key_len;
1855+
strlen_t key_len;
18561856
int val_len;
18571857
int val_free, key_free;
18581858
char buf[32];
@@ -1871,7 +1871,7 @@ generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, ResultCallback fun) {
18711871

18721872
val_free = redis_serialize(redis_sock, z_value_p, &val, &val_len
18731873
TSRMLS_CC);
1874-
key_free = redis_key_prefix(redis_sock, &key, (int*)&key_len);
1874+
key_free = redis_key_prefix(redis_sock, &key, &key_len);
18751875

18761876
if(step == 0) { /* counting */
18771877
cmd_len += 1 + integer_length(key_len) + 2
@@ -2855,7 +2855,8 @@ redis_build_pubsub_cmd(RedisSock *redis_sock, char **ret, PUBSUB_TYPE type,
28552855
HashTable *ht_chan;
28562856
zval *z_ele;
28572857
char *key;
2858-
int cmd_len, key_len, key_free;
2858+
int cmd_len, key_free;
2859+
strlen_t key_len;
28592860
smart_string cmd = {0};
28602861

28612862
if(type == PUBSUB_CHANNELS) {
@@ -2893,7 +2894,7 @@ redis_build_pubsub_cmd(RedisSock *redis_sock, char **ret, PUBSUB_TYPE type,
28932894
ZEND_HASH_FOREACH_VAL(ht_chan, z_ele) {
28942895
zend_string *zstr = zval_get_string(z_ele);
28952896
char *key = zstr->val;
2896-
int key_len = zstr->len;
2897+
strlen_t key_len = zstr->len;
28972898

28982899
/* Apply prefix if required */
28992900
key_free = redis_key_prefix(redis_sock, &key, &key_len);
@@ -3027,7 +3028,7 @@ redis_build_eval_cmd(RedisSock *redis_sock, char **ret, char *keyword,
30273028
ZEND_HASH_FOREACH_VAL(args_hash, elem) {
30283029
zend_string *zstr = zval_get_string(elem);
30293030
char *key = zstr->val;
3030-
int key_len = zstr->len;
3031+
strlen_t key_len = zstr->len;
30313032

30323033
/* Keep track of the old command pointer */
30333034
char *old_cmd = *ret;
@@ -3281,7 +3282,7 @@ PHP_METHOD(Redis, migrate) {
32813282
}
32823283

32833284
// Prefix our key if we need to, build our command
3284-
key_free = redis_key_prefix(redis_sock, &key, (int *)&key_len);
3285+
key_free = redis_key_prefix(redis_sock, &key, &key_len);
32853286

32863287
/* Construct our command */
32873288
if(copy && replace) {
@@ -3756,7 +3757,7 @@ generic_scan_cmd(INTERNAL_FUNCTION_PARAMETERS, REDIS_SCAN_TYPE type) {
37563757

37573758
/* Prefix our key if we've got one and we have a prefix set */
37583759
if(key_len) {
3759-
key_free = redis_key_prefix(redis_sock, &key, (int *)&key_len);
3760+
key_free = redis_key_prefix(redis_sock, &key, &key_len);
37603761
}
37613762

37623763
/**

redis_cluster.c

+8-5
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,8 @@ typedef struct clusterKeyValHT {
585585
char kbuf[22];
586586

587587
char *key;
588-
int key_len, key_free;
588+
strlen_t key_len;
589+
int key_free;
589590
short slot;
590591

591592
char *val;
@@ -1050,7 +1051,7 @@ PHP_METHOD(RedisCluster, keys) {
10501051
}
10511052

10521053
/* Prefix and then build our command */
1053-
pat_free = redis_key_prefix(c->flags, &pat, (int *)&pat_len);
1054+
pat_free = redis_key_prefix(c->flags, &pat, &pat_len);
10541055
cmd_len = redis_cmd_format_static(&cmd, "KEYS", "s", pat, pat_len);
10551056
if(pat_free) efree(pat);
10561057

@@ -1899,7 +1900,8 @@ static void cluster_eval_cmd(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c,
18991900
{
19001901
redisClusterNode *node=NULL;
19011902
char *lua, *key;
1902-
int key_free, args_count=0, key_len;
1903+
int key_free, args_count=0;
1904+
strlen_t key_len;
19031905
zval *z_arr=NULL, *z_ele;
19041906
HashTable *ht_arr;
19051907
zend_long num_keys = 0;
@@ -2306,7 +2308,8 @@ PHP_METHOD(RedisCluster, discard) {
23062308
static short
23072309
cluster_cmd_get_slot(redisCluster *c, zval *z_arg TSRMLS_DC)
23082310
{
2309-
int key_len, key_free;
2311+
strlen_t key_len;
2312+
int key_free;
23102313
zval *z_host, *z_port;
23112314
short slot;
23122315
char *key;
@@ -2499,7 +2502,7 @@ static void cluster_kscan_cmd(INTERNAL_FUNCTION_PARAMETERS,
24992502
}
25002503

25012504
// Apply any key prefix we have, get the slot
2502-
key_free = redis_key_prefix(c->flags, &key, (int *)&key_len);
2505+
key_free = redis_key_prefix(c->flags, &key, &key_len);
25032506
slot = cluster_hash_key(key, key_len);
25042507

25052508
// If SCAN_RETRY is set, loop until we get a zero iterator or until

0 commit comments

Comments
 (0)