Skip to content

Commit

Permalink
change redis_serialize to accept strlen_t
Browse files Browse the repository at this point in the history
  • Loading branch information
remicollet committed Dec 21, 2016
1 parent c9825cc commit 1435d45
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 24 deletions.
3 changes: 2 additions & 1 deletion cluster_library.c
Expand Up @@ -455,7 +455,8 @@ void cluster_dist_add_val(redisCluster *c, clusterKeyVal *kv, zval *z_val
TSRMLS_DC)
{
char *val;
int val_len, val_free;
strlen_t val_len;
int val_free;

// Serialize our value
val_free = redis_serialize(c->flags, z_val, &val, &val_len TSRMLS_CC);
Expand Down
2 changes: 1 addition & 1 deletion cluster_library.h
Expand Up @@ -333,7 +333,7 @@ void cluster_free_reply(clusterReply *reply, int free_data);
HashTable *cluster_dist_create();
void cluster_dist_free(HashTable *ht);
int cluster_dist_add_key(redisCluster *c, HashTable *ht, char *key,
int key_len, clusterKeyVal **kv);
strlen_t key_len, clusterKeyVal **kv);
void cluster_dist_add_val(redisCluster *c, clusterKeyVal *kv, zval *val
TSRMLS_DC);

Expand Down
6 changes: 3 additions & 3 deletions library.c
Expand Up @@ -1972,7 +1972,7 @@ PHP_REDIS_API void redis_free_socket(RedisSock *redis_sock)
}

PHP_REDIS_API int
redis_serialize(RedisSock *redis_sock, zval *z, char **val, int *val_len
redis_serialize(RedisSock *redis_sock, zval *z, char **val, strlen_t *val_len
TSRMLS_DC)
{
#if ZEND_MODULE_API_NO >= 20100000
Expand Down Expand Up @@ -2024,7 +2024,7 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, int *val_len
php_var_serialize(&sstr, z, &ht);
#if (PHP_MAJOR_VERSION < 7)
*val = estrndup(sstr.c, sstr.len);
*val_len = (int)sstr.len;
*val_len = sstr.len;
#else
*val = estrndup(sstr.s->val, sstr.s->len);
*val_len = sstr.s->len;
Expand All @@ -2042,7 +2042,7 @@ redis_serialize(RedisSock *redis_sock, zval *z, char **val, int *val_len
#ifdef HAVE_REDIS_IGBINARY
if(igbinary_serialize(&val8, (size_t *)&sz, z TSRMLS_CC) == 0) {
*val = (char*)val8;
*val_len = (int)sz;
*val_len = sz;
return 1;
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion library.h
Expand Up @@ -65,7 +65,7 @@ PHP_REDIS_API void redis_send_discard(INTERNAL_FUNCTION_PARAMETERS, RedisSock *r
PHP_REDIS_API void redis_sock_set_err(RedisSock *redis_sock, const char *msg, int msg_len);

PHP_REDIS_API int
redis_serialize(RedisSock *redis_sock, zval *z, char **val, int *val_len TSRMLS_DC);
redis_serialize(RedisSock *redis_sock, zval *z, char **val, strlen_t *val_len TSRMLS_DC);
PHP_REDIS_API int
redis_key_prefix(RedisSock *redis_sock, char **key, strlen_t *key_len);

Expand Down
2 changes: 1 addition & 1 deletion redis.c
Expand Up @@ -1853,7 +1853,7 @@ generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, ResultCallback fun) {
ZEND_HASH_FOREACH_KEY_VAL(keytable, idx, zkey, z_value_p) {
char *key, *val;
strlen_t key_len;
int val_len;
strlen_t val_len;
int val_free, key_free;
char buf[32];

Expand Down
3 changes: 2 additions & 1 deletion redis_cluster.c
Expand Up @@ -590,7 +590,8 @@ typedef struct clusterKeyValHT {
short slot;

char *val;
int val_len, val_free;
strlen_t val_len;
int val_free;
} clusterKeyValHT;

/* Helper to pull a key/value pair from a HashTable */
Expand Down
33 changes: 17 additions & 16 deletions redis_commands.c
Expand Up @@ -109,8 +109,8 @@ int redis_key_long_val_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
void **ctx)
{
char *key = NULL, *val=NULL;
int val_len, val_free, key_free;
strlen_t key_len;
int val_free, key_free;
strlen_t key_len, val_len;
zend_long expire;
zval *z_val;

Expand Down Expand Up @@ -185,7 +185,7 @@ int redis_kv_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
return FAILURE;
}

val_free = redis_serialize(redis_sock, z_val, &val, (int *)&val_len TSRMLS_CC);
val_free = redis_serialize(redis_sock, z_val, &val, &val_len TSRMLS_CC);
key_free = redis_key_prefix(redis_sock, &key, &key_len);

// Construct our command
Expand Down Expand Up @@ -1008,8 +1008,8 @@ int redis_key_arr_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
zval *z_arr, *z_val;
HashTable *ht_arr;
smart_string cmdstr = {0};
int val_len, key_free, val_free, argc = 1;
strlen_t key_len;
int key_free, val_free, argc = 1;
strlen_t val_len, key_len;
char *key, *val;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sa", &key, &key_len,
Expand Down Expand Up @@ -1207,7 +1207,7 @@ int redis_set_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
}

// Serialize and key prefix if required
val_free = redis_serialize(redis_sock, z_value, &val, (int *)&val_len TSRMLS_CC);
val_free = redis_serialize(redis_sock, z_value, &val, &val_len TSRMLS_CC);
key_free = redis_key_prefix(redis_sock, &key, &key_len);

// Check for an options array
Expand Down Expand Up @@ -1588,7 +1588,8 @@ int redis_hmset_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
// Start traversing our key => value array
ZEND_HASH_FOREACH_KEY_VAL(ht_vals, idx, zkey, z_val) {
char *mem, *val, kbuf[40];
int val_len, val_free;
strlen_t val_len;
int val_free;
unsigned int mem_len;

// If the hash key is an integer, convert it to a string
Expand Down Expand Up @@ -2046,8 +2047,8 @@ int redis_linsert_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,

// Prefix key, serialize value and position
key_free = redis_key_prefix(redis_sock, &key, &key_len);
val_free = redis_serialize(redis_sock, z_val, &val, (int *)&val_len TSRMLS_CC);
pivot_free = redis_serialize(redis_sock, z_pivot, &pivot, (int *)&pivot_len
val_free = redis_serialize(redis_sock, z_val, &val, &val_len TSRMLS_CC);
pivot_free = redis_serialize(redis_sock, z_pivot, &pivot, &pivot_len
TSRMLS_CC);

// Construct command
Expand Down Expand Up @@ -2084,7 +2085,7 @@ int redis_lrem_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,

// Prefix key, serialize value
key_free = redis_key_prefix(redis_sock, &key, &key_len);
val_free = redis_serialize(redis_sock, z_val, &val, (int *)&val_len TSRMLS_CC);
val_free = redis_serialize(redis_sock, z_val, &val, &val_len TSRMLS_CC);

// Construct command
*cmd_len = redis_cmd_format_static(cmd, "LREM", "sds", key, key_len, count,
Expand Down Expand Up @@ -2115,7 +2116,7 @@ int redis_smove_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
return FAILURE;
}

val_free = redis_serialize(redis_sock, z_val, &val, (int *)&val_len TSRMLS_CC);
val_free = redis_serialize(redis_sock, z_val, &val, &val_len TSRMLS_CC);
src_free = redis_key_prefix(redis_sock, &src, &src_len);
dst_free = redis_key_prefix(redis_sock, &dst, &dst_len);

Expand Down Expand Up @@ -2163,7 +2164,7 @@ static int gen_hset_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
}

// Prefix/serialize
val_free = redis_serialize(redis_sock, z_val, &val, (int *)&val_len TSRMLS_CC);
val_free = redis_serialize(redis_sock, z_val, &val, &val_len TSRMLS_CC);
key_free = redis_key_prefix(redis_sock, &key, &key_len);

// Construct command
Expand Down Expand Up @@ -2255,7 +2256,7 @@ int redis_zincrby_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,

// Prefix key, serialize
key_free = redis_key_prefix(redis_sock, &key, &key_len);
mem_free = redis_serialize(redis_sock, z_val, &mem, (int *)&mem_len TSRMLS_CC);
mem_free = redis_serialize(redis_sock, z_val, &mem, &mem_len TSRMLS_CC);

*cmd_len = redis_cmd_format_static(cmd, "ZINCRBY", "sfs", key, key_len,
incrby, mem, mem_len);
Expand Down Expand Up @@ -2561,8 +2562,8 @@ int redis_zadd_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
{
zval *z_args;
char *key, *val, *exp_type = NULL;
strlen_t key_len;
int key_free, val_len, val_free;
strlen_t key_len, val_len;
int key_free, val_free;
int num = ZEND_NUM_ARGS(), i = 1, argc;
zend_bool ch = 0, incr = 0;
smart_string cmdstr = {0};
Expand Down Expand Up @@ -3205,7 +3206,7 @@ void redis_serialize_handler(INTERNAL_FUNCTION_PARAMETERS,
{
zval *z_val;
char *val;
int val_len;
strlen_t val_len;

if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &z_val)==FAILURE) {
RETURN_FALSE;
Expand Down

0 comments on commit 1435d45

Please sign in to comment.