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

Skip to content

Commit 4e32254

Browse files
committed
Use ZSTR_VAL and ZSTR_LEN macroses to access zend_string fields
1 parent 7c14071 commit 4e32254

9 files changed

Lines changed: 91 additions & 87 deletions

File tree

cluster_library.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2431,7 +2431,7 @@ int mbulk_resp_loop_zipdbl(RedisSock *redis_sock, zval *z_result,
24312431
zval zv, *z = &zv;
24322432
if (redis_unserialize(redis_sock,key,key_len, z TSRMLS_CC)) {
24332433
zend_string *zstr = zval_get_string(z);
2434-
add_assoc_double_ex(z_result, zstr->val, zstr->len, atof(line));
2434+
add_assoc_double_ex(z_result, ZSTR_VAL(zstr), ZSTR_LEN(zstr), atof(line));
24352435
zend_string_release(zstr);
24362436
zval_dtor(z);
24372437
} else {

common.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@ typedef struct {
2222
char *val;
2323
} zend_string;
2424

25+
#define ZSTR_VAL(s) (s)->val
26+
#define ZSTR_LEN(s) (s)->len
27+
2528
#define zend_string_release(s) do { \
2629
if ((s) && (s)->gc) { \
27-
if ((s)->gc & 0x10 && (s)->val) efree((s)->val); \
30+
if ((s)->gc & 0x10 && ZSTR_VAL(s)) efree(ZSTR_VAL(s)); \
2831
if ((s)->gc & 0x01) efree((s)); \
2932
} \
3033
} while (0)
@@ -210,21 +213,22 @@ extern int (*_add_next_index_stringl)(zval *, const char *, uint, int);
210213

211214
#undef ZVAL_STRING
212215
#define ZVAL_STRING(z, s) do { \
213-
const char *_s=(s); \
216+
const char *_s = (s); \
214217
ZVAL_STRINGL(z, _s, strlen(_s)); \
215218
} while (0)
216219
#undef RETVAL_STRING
217220
#define RETVAL_STRING(s) ZVAL_STRING(return_value, s)
218221
#undef RETURN_STRING
219222
#define RETURN_STRING(s) { RETVAL_STRING(s); return; }
223+
220224
#undef ZVAL_STRINGL
221225
#define ZVAL_STRINGL(z, s, l) do { \
222-
const char *__s=(s); int __l=l; \
226+
const char *__s = (s); int __l = l; \
223227
zval *__z = (z); \
224228
Z_STRLEN_P(__z) = __l; \
225229
Z_STRVAL_P(__z) = estrndup(__s, __l); \
226230
Z_TYPE_P(__z) = IS_STRING; \
227-
} while(0)
231+
} while (0)
228232
#undef RETVAL_STRINGL
229233
#define RETVAL_STRINGL(s, l) ZVAL_STRINGL(return_value, s, l)
230234
#undef RETURN_STRINGL
@@ -335,27 +339,27 @@ zval_get_string(zval *op)
335339
zend_string *zstr = ecalloc(1, sizeof(zend_string));
336340

337341
zstr->gc = 0;
338-
zstr->val = "";
339-
zstr->len = 0;
342+
ZSTR_VAL(zstr) = "";
343+
ZSTR_LEN(zstr) = 0;
340344
switch (Z_TYPE_P(op)) {
341345
case IS_STRING:
342-
zstr->val = Z_STRVAL_P(op);
343-
zstr->len = Z_STRLEN_P(op);
346+
ZSTR_VAL(zstr) = Z_STRVAL_P(op);
347+
ZSTR_LEN(zstr) = Z_STRLEN_P(op);
344348
break;
345349
case IS_BOOL:
346350
if (Z_LVAL_P(op)) {
347-
zstr->val = "1";
348-
zstr->len = 1;
351+
ZSTR_VAL(zstr) = "1";
352+
ZSTR_LEN(zstr) = 1;
349353
}
350354
break;
351355
case IS_LONG: {
352356
zstr->gc = 0x10;
353-
zstr->len = spprintf(&zstr->val, 0, "%ld", Z_LVAL_P(op));
357+
ZSTR_LEN(zstr) = spprintf(&ZSTR_VAL(zstr), 0, "%ld", Z_LVAL_P(op));
354358
break;
355359
}
356360
case IS_DOUBLE: {
357361
zstr->gc = 0x10;
358-
zstr->len = spprintf(&zstr->val, 0, "%.16g", Z_DVAL_P(op));
362+
ZSTR_LEN(zstr) = spprintf(&ZSTR_VAL(zstr), 0, "%.16g", Z_DVAL_P(op));
359363
break;
360364
}
361365
EMPTY_SWITCH_DEFAULT_CASE()

library.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ redis_spprintf(RedisSock *redis_sock, short *slot TSRMLS_DC, char **ret, char *k
590590
break;
591591
case 'S':
592592
arg.zstr = va_arg(ap, zend_string*);
593-
redis_cmd_append_sstr(&cmd, arg.zstr->val, arg.zstr->len);
593+
redis_cmd_append_sstr(&cmd, ZSTR_VAL(arg.zstr), ZSTR_LEN(arg.zstr));
594594
break;
595595
case 'k':
596596
arg.str = va_arg(ap, char*);
@@ -1119,16 +1119,16 @@ static void array_zip_values_and_scores(RedisSock *redis_sock, zval *z_tab,
11191119

11201120
/* Decode the score depending on flag */
11211121
if (decode == SCORE_DECODE_INT && Z_STRLEN_P(z_value_p) > 0) {
1122-
add_assoc_long_ex(z_ret, hkey->val, hkey->len, atoi(hval+1));
1122+
add_assoc_long_ex(z_ret, ZSTR_VAL(hkey), ZSTR_LEN(hkey), atoi(hval+1));
11231123
} else if (decode == SCORE_DECODE_DOUBLE) {
1124-
add_assoc_double_ex(z_ret, hkey->val, hkey->len, atof(hval));
1124+
add_assoc_double_ex(z_ret, ZSTR_VAL(hkey), ZSTR_LEN(hkey), atof(hval));
11251125
} else {
11261126
zval zv0, *z = &zv0;
11271127
#if (PHP_MAJOR_VERSION < 7)
11281128
MAKE_STD_ZVAL(z);
11291129
#endif
11301130
ZVAL_ZVAL(z, z_value_p, 1, 0);
1131-
add_assoc_zval_ex(z_ret, hkey->val, hkey->len, z);
1131+
add_assoc_zval_ex(z_ret, ZSTR_VAL(hkey), ZSTR_LEN(hkey), z);
11321132
}
11331133
zend_string_release(hkey);
11341134
}
@@ -1814,8 +1814,8 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, strlen_t *val_len
18141814

18151815
default: { /* copy */
18161816
zend_string *zstr = zval_get_string(z);
1817-
*val = estrndup(zstr->val, zstr->len);
1818-
*val_len = zstr->len;
1817+
*val = estrndup(ZSTR_VAL(zstr), ZSTR_LEN(zstr));
1818+
*val_len = ZSTR_LEN(zstr);
18191819
zend_string_release(zstr);
18201820
return 1;
18211821
}
@@ -1833,8 +1833,8 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, strlen_t *val_len
18331833
*val = estrndup(sstr.c, sstr.len);
18341834
*val_len = sstr.len;
18351835
#else
1836-
*val = estrndup(sstr.s->val, sstr.s->len);
1837-
*val_len = sstr.s->len;
1836+
*val = estrndup(ZSTR_VAL(sstr.s), ZSTR_LEN(sstr.s));
1837+
*val_len = ZSTR_LEN(sstr.s);
18381838
#endif
18391839
smart_str_free(&sstr);
18401840
#if ZEND_MODULE_API_NO >= 20100000

redis.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1547,7 +1547,7 @@ PHP_METHOD(Redis, getMultiple)
15471547
/* Iterate through and grab our keys */
15481548
ZEND_HASH_FOREACH_VAL(hash, z_ele) {
15491549
zend_string *zstr = zval_get_string(z_ele);
1550-
redis_cmd_append_sstr_key(&cmd, zstr->val, zstr->len, redis_sock, NULL);
1550+
redis_cmd_append_sstr_key(&cmd, ZSTR_VAL(zstr), ZSTR_LEN(zstr), redis_sock, NULL);
15511551
zend_string_release(zstr);
15521552
} ZEND_HASH_FOREACH_END();
15531553

@@ -2004,13 +2004,13 @@ generic_sort_cmd(INTERNAL_FUNCTION_PARAMETERS, int desc, int alpha)
20042004
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(zget), zele) {
20052005
zpattern = zval_get_string(zele);
20062006
redis_cmd_append_sstr(&cmd, "GET", sizeof("GET") - 1);
2007-
redis_cmd_append_sstr(&cmd, zpattern->val, zpattern->len);
2007+
redis_cmd_append_sstr(&cmd, ZSTR_VAL(zpattern), ZSTR_LEN(zpattern));
20082008
zend_string_release(zpattern);
20092009
} ZEND_HASH_FOREACH_END();
20102010
} else {
20112011
zpattern = zval_get_string(zget);
20122012
redis_cmd_append_sstr(&cmd, "GET", sizeof("GET") - 1);
2013-
redis_cmd_append_sstr(&cmd, zpattern->val, zpattern->len);
2013+
redis_cmd_append_sstr(&cmd, ZSTR_VAL(zpattern), ZSTR_LEN(zpattern));
20142014
zend_string_release(zpattern);
20152015
}
20162016
}
@@ -2273,7 +2273,7 @@ void generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, ResultCallback fun)
22732273
ZEND_HASH_FOREACH_KEY_VAL(htargs, idx, zkey, zmem) {
22742274
/* Handle string or numeric keys */
22752275
if (zkey) {
2276-
redis_cmd_append_sstr_key(&cmd, zkey->val, zkey->len, redis_sock, NULL);
2276+
redis_cmd_append_sstr_key(&cmd, ZSTR_VAL(zkey), ZSTR_LEN(zkey), redis_sock, NULL);
22772277
} else {
22782278
keylen = snprintf(buf, sizeof(buf), "%ld", (long)idx);
22792279
redis_cmd_append_sstr_key(&cmd, buf, (strlen_t)keylen, redis_sock, NULL);
@@ -3197,7 +3197,7 @@ redis_build_pubsub_cmd(RedisSock *redis_sock, char **ret, PUBSUB_TYPE type,
31973197
/* Iterate our elements */
31983198
ZEND_HASH_FOREACH_VAL(ht_chan, z_ele) {
31993199
zend_string *zstr = zval_get_string(z_ele);
3200-
redis_cmd_append_sstr_key(&cmd, zstr->val, zstr->len, redis_sock, NULL);
3200+
redis_cmd_append_sstr_key(&cmd, ZSTR_VAL(zstr), ZSTR_LEN(zstr), redis_sock, NULL);
32013201
zend_string_release(zstr);
32023202
} ZEND_HASH_FOREACH_END();
32033203

@@ -3310,7 +3310,7 @@ redis_build_script_exists_cmd(char **ret, zval *argv, int argc) {
33103310

33113311
for (i = 0; i < argc; i++) {
33123312
zstr = zval_get_string(&argv[i]);
3313-
redis_cmd_append_sstr(&cmd, zstr->val, zstr->len);
3313+
redis_cmd_append_sstr(&cmd, ZSTR_VAL(zstr), ZSTR_LEN(zstr));
33143314
zend_string_release(zstr);
33153315
}
33163316

redis_array.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,8 +1054,8 @@ PHP_METHOD(RedisArray, mset)
10541054
ZEND_HASH_FOREACH_KEY_VAL(h_keys, idx, zkey, data) {
10551055
/* If the key isn't a string, make a string representation of it */
10561056
if (zkey) {
1057-
key_len = zkey->len;
1058-
key = zkey->val;
1057+
key_len = ZSTR_LEN(zkey);
1058+
key = ZSTR_VAL(zkey);
10591059
} else {
10601060
key_len = snprintf(kbuf, sizeof(kbuf), "%lu", idx);
10611061
key = kbuf;

redis_array_impl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ ra_index_keys(zval *z_pairs, zval *z_redis TSRMLS_DC) {
590590
#endif
591591

592592
if (zkey) {
593-
ZVAL_STRINGL(z_new, zkey->val, zkey->len);
593+
ZVAL_STRINGL(z_new, ZSTR_VAL(zkey), ZSTR_LEN(zkey));
594594
} else {
595595
ZVAL_LONG(z_new, idx);
596596
}
@@ -898,7 +898,7 @@ ra_move_zset(const char *key, int key_len, zval *z_from, zval *z_to, long ttl TS
898898

899899
/* add value */
900900
if (zkey) {
901-
ZVAL_STRINGL(&z_zadd_args[i+1], zkey->val, zkey->len);
901+
ZVAL_STRINGL(&z_zadd_args[i+1], ZSTR_VAL(zkey), ZSTR_LEN(zkey));
902902
} else {
903903
ZVAL_LONG(&z_zadd_args[i+1], (long)idx);
904904
}

redis_cluster.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -589,8 +589,8 @@ static int get_key_val_ht(redisCluster *c, HashTable *ht, HashPosition *ptr,
589589
zend_string *zkey;
590590
switch (zend_hash_get_current_key_ex(ht, &zkey, &idx, ptr)) {
591591
case HASH_KEY_IS_STRING:
592-
kv->key_len = zkey->len;
593-
kv->key = zkey->val;
592+
kv->key_len = ZSTR_LEN(zkey);
593+
kv->key = ZSTR_VAL(zkey);
594594
#endif
595595
break;
596596
case HASH_KEY_IS_LONG:
@@ -2062,7 +2062,7 @@ PHP_METHOD(RedisCluster, watch) {
20622062
zstr = zval_get_string(&z_args[i]);
20632063

20642064
// Add this key to our distribution handler
2065-
if (cluster_dist_add_key(c, ht_dist, zstr->val, zstr->len, NULL) == FAILURE) {
2065+
if (cluster_dist_add_key(c, ht_dist, ZSTR_VAL(zstr), ZSTR_LEN(zstr), NULL) == FAILURE) {
20662066
zend_throw_exception(redis_cluster_exception_ce,
20672067
"Can't issue WATCH command as the keyspace isn't fully mapped",
20682068
0 TSRMLS_CC);
@@ -2216,8 +2216,8 @@ cluster_cmd_get_slot(redisCluster *c, zval *z_arg TSRMLS_DC)
22162216
{
22172217
/* Allow for any scalar here */
22182218
zstr = zval_get_string(z_arg);
2219-
key = zstr->val;
2220-
key_len = zstr->len;
2219+
key = ZSTR_VAL(zstr);
2220+
key_len = ZSTR_LEN(zstr);
22212221

22222222
/* Hash it */
22232223
key_free = redis_key_prefix(c->flags, &key, &key_len);
@@ -2333,7 +2333,7 @@ static void cluster_raw_cmd(INTERNAL_FUNCTION_PARAMETERS, char *kw, int kw_len)
23332333
/* Iterate, appending args */
23342334
for(i=1;i<argc;i++) {
23352335
zend_string *zstr = zval_get_string(&z_args[i]);
2336-
redis_cmd_append_sstr(&cmd, zstr->val, zstr->len);
2336+
redis_cmd_append_sstr(&cmd, ZSTR_VAL(zstr), ZSTR_LEN(zstr));
23372337
zend_string_release(zstr);
23382338
}
23392339

0 commit comments

Comments
 (0)