Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2016-10-25 11:04:01 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2016-10-25 22:03:44 +0300
commit88658b5e9bf2b40e769169e7e77e19486286373d (patch)
tree84ac491b1a6d63c310fa2afdd30dce9e573b9e7a /redis_cluster.c
parent8cfcad0b56cf3aa39fd058ef6430d5ae65ff6ec3 (diff)
WIP: php7 compatibility
Wrap create_cluster_context
Diffstat (limited to 'redis_cluster.c')
-rw-r--r--redis_cluster.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/redis_cluster.c b/redis_cluster.c
index 5ffbd9ea..8fdd7453 100644
--- a/redis_cluster.c
+++ b/redis_cluster.c
@@ -36,7 +36,13 @@ zend_class_entry *redis_cluster_ce;
/* Exception handler */
zend_class_entry *redis_cluster_exception_ce;
+
+#if (PHP_MAJOR_VERSION < 7)
static zend_class_entry *spl_rte_ce = NULL;
+#else
+/* Handlers for RedisCluster */
+zend_object_handlers RedisCluster_handlers;
+#endif
/* Argument info for HSCAN, SSCAN, HSCAN */
ZEND_BEGIN_ARG_INFO_EX(arginfo_kscan_cl, 0, 0, 2)
@@ -263,14 +269,22 @@ PHPAPI zend_class_entry *rediscluster_get_exception_base(int root TSRMLS_DC) {
}
/* Create redisCluster context */
+#if (PHP_MAJOR_VERSION < 7)
zend_object_value
create_cluster_context(zend_class_entry *class_type TSRMLS_DC) {
- zend_object_value retval;
redisCluster *cluster;
// Allocate our actual struct
cluster = emalloc(sizeof(redisCluster));
memset(cluster, 0, sizeof(redisCluster));
+#else
+zend_object *
+create_cluster_context(zend_class_entry *class_type TSRMLS_DC) {
+ redisCluster *cluster;
+
+ // Allocate our actual struct
+ cluster = emalloc(sizeof(redisCluster) + sizeof(zval) * (class_type->default_properties_count - 1));
+#endif
// We're not currently subscribed anywhere
cluster->subscribed_slot = -1;
@@ -291,7 +305,8 @@ create_cluster_context(zend_class_entry *class_type TSRMLS_DC) {
// Initialize it
zend_object_std_init(&cluster->std, class_type TSRMLS_CC);
-
+#if (PHP_MAJOR_VERSION < 7)
+ zend_object_value retval;
#if PHP_VERSION_ID < 50399
zval *tmp;
@@ -306,6 +321,15 @@ create_cluster_context(zend_class_entry *class_type TSRMLS_DC) {
retval.handlers = zend_get_std_object_handlers();
return retval;
+#else
+ object_properties_init(&cluster->std, class_type);
+ memcpy(&RedisCluster_handlers, zend_get_std_object_handlers(), sizeof(RedisCluster_handlers));
+ RedisCluster_handlers.free_obj = free_cluster_context;
+
+ cluster->std.handlers = &RedisCluster_handlers;
+
+ return &cluster->std;
+#endif
}
/* Free redisCluster context */