Skip to content

Commit d5dadaf

Browse files
committed
Add PHPREDIS_GET_OBJECT and PHPREDIS_ZVAL_GET_OBJECT macros
1 parent 92f8dde commit d5dadaf

File tree

8 files changed

+14
-14
lines changed

8 files changed

+14
-14
lines changed

common.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
#include <ext/standard/php_smart_string.h>
1414

1515
#define PHPREDIS_ZVAL_IS_STRICT_FALSE(z) (Z_TYPE_P(z) == IS_FALSE)
16-
#define PHPREDIS_GET_OBJECT(class_entry, z) (class_entry *)((char *)Z_OBJ_P(z) - XtOffsetOf(class_entry, std))
16+
#define PHPREDIS_GET_OBJECT(class_entry, o) (class_entry *)((char *)o - XtOffsetOf(class_entry, std))
17+
#define PHPREDIS_ZVAL_GET_OBJECT(class_entry, z) PHPREDIS_GET_OBJECT(class_entry, Z_OBJ_P(z))
1718

1819
/* NULL check so Eclipse doesn't go crazy */
1920
#ifndef NULL

redis.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ static void cluster_cache_dtor(zend_resource *rsrc) {
567567
void
568568
free_redis_object(zend_object *object)
569569
{
570-
redis_object *redis = (redis_object *)((char *)(object) - XtOffsetOf(redis_object, std));
570+
redis_object *redis = PHPREDIS_GET_OBJECT(redis_object, object);
571571

572572
zend_object_std_dtor(&redis->std);
573573
if (redis->sock) {
@@ -600,7 +600,7 @@ redis_sock_get_instance(zval *id, int no_throw)
600600
redis_object *redis;
601601

602602
if (Z_TYPE_P(id) == IS_OBJECT) {
603-
redis = PHPREDIS_GET_OBJECT(redis_object, id);
603+
redis = PHPREDIS_ZVAL_GET_OBJECT(redis_object, id);
604604
if (redis->sock) {
605605
return redis->sock;
606606
}
@@ -1012,7 +1012,7 @@ redis_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
10121012
port = 6379;
10131013
}
10141014

1015-
redis = PHPREDIS_GET_OBJECT(redis_object, object);
1015+
redis = PHPREDIS_ZVAL_GET_OBJECT(redis_object, object);
10161016
/* if there is a redis sock already we have to remove it */
10171017
if (redis->sock) {
10181018
redis_sock_disconnect(redis->sock, 0);

redis_array.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ zend_object_handlers redis_array_object_handlers;
178178
void
179179
free_redis_array_object(zend_object *object)
180180
{
181-
redis_array_object *obj = (redis_array_object *)((char *)(object) - XtOffsetOf(redis_array_object, std));
181+
redis_array_object *obj = PHPREDIS_GET_OBJECT(redis_array_object, object);
182182

183183
if (obj->ra) {
184184
if (obj->ra->prev) redis_array_free(obj->ra->prev);
@@ -214,7 +214,7 @@ redis_array_get(zval *id)
214214
redis_array_object *obj;
215215

216216
if (Z_TYPE_P(id) == IS_OBJECT) {
217-
obj = PHPREDIS_GET_OBJECT(redis_array_object, id);
217+
obj = PHPREDIS_ZVAL_GET_OBJECT(redis_array_object, id);
218218
return obj->ra;
219219
}
220220
return NULL;
@@ -224,7 +224,7 @@ PHP_REDIS_API int
224224
ra_call_user_function(HashTable *function_table, zval *object, zval *function_name, zval *retval_ptr, uint32_t param_count, zval params[])
225225
{
226226
if (object) {
227-
redis_object *redis = PHPREDIS_GET_OBJECT(redis_object, object);
227+
redis_object *redis = PHPREDIS_ZVAL_GET_OBJECT(redis_object, object);
228228
if (redis->sock->auth &&
229229
redis->sock->status != REDIS_SOCK_STATUS_CONNECTED &&
230230
redis_sock_server_open(redis->sock) == SUCCESS
@@ -366,7 +366,7 @@ PHP_METHOD(RedisArray, __construct)
366366
ra->auto_rehash = b_autorehash;
367367
ra->connect_timeout = d_connect_timeout;
368368
if(ra->prev) ra->prev->auto_rehash = b_autorehash;
369-
obj = PHPREDIS_GET_OBJECT(redis_array_object, getThis());
369+
obj = PHPREDIS_ZVAL_GET_OBJECT(redis_array_object, getThis());
370370
obj->ra = ra;
371371
}
372372
}

redis_array_impl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ ra_load_hosts(RedisArray *ra, HashTable *hosts, zend_string *auth, long retry_in
6767
call_user_function(&redis_ce->function_table, &ra->redis[i], &z_cons, &z_ret, 0, NULL);
6868
zval_dtor(&z_ret);
6969

70-
redis = PHPREDIS_GET_OBJECT(redis_object, &ra->redis[i]);
70+
redis = PHPREDIS_ZVAL_GET_OBJECT(redis_object, &ra->redis[i]);
7171

7272
/* create socket */
7373
redis->sock = redis_sock_create(host, host_len, port, ra->connect_timeout, ra->read_timeout, ra->pconnect, NULL, retry_interval);

redis_cluster.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ zend_object * create_cluster_context(zend_class_entry *class_type) {
334334

335335
/* Free redisCluster context */
336336
void free_cluster_context(zend_object *object) {
337-
redisCluster *cluster = (redisCluster*)((char*)(object) - XtOffsetOf(redisCluster, std));
337+
redisCluster *cluster = PHPREDIS_GET_OBJECT(redisCluster, object);
338338

339339
cluster_free(cluster, 0);
340340
zend_object_std_dtor(&cluster->std);

redis_cluster.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
#define REDIS_CLUSTER_MOD (REDIS_CLUSTER_SLOTS-1)
1111

1212
/* Get attached object context */
13-
#define GET_CONTEXT() \
14-
((redisCluster *)((char *)Z_OBJ_P(getThis()) - XtOffsetOf(redisCluster, std)))
13+
#define GET_CONTEXT() PHPREDIS_ZVAL_GET_OBJECT(redisCluster, getThis())
1514

1615
/* Command building/processing is identical for every command */
1716
#define CLUSTER_BUILD_CMD(name, c, cmd, cmd_len, slot) \

redis_sentinel.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ PHP_METHOD(RedisSentinel, __construct)
9393
}
9494
}
9595

96-
obj = PHPREDIS_GET_OBJECT(redis_sentinel_object, getThis());
96+
obj = PHPREDIS_ZVAL_GET_OBJECT(redis_sentinel_object, getThis());
9797
obj->sock = redis_sock_create(ZSTR_VAL(host), ZSTR_LEN(host), port,
9898
timeout, read_timeout, persistent, persistent_id, retry_interval);
9999
}

sentinel_library.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ static zend_object_handlers redis_sentinel_object_handlers;
55
static void
66
free_redis_sentinel_object(zend_object *object)
77
{
8-
redis_sentinel_object *obj = (redis_sentinel_object *)((char *)(object) - XtOffsetOf(redis_sentinel_object, std));
8+
redis_sentinel_object *obj = PHPREDIS_GET_OBJECT(redis_sentinel_object, object);
99

1010
if (obj->sock) {
1111
redis_sock_disconnect(obj->sock, 0);

0 commit comments

Comments
 (0)