@@ -36,7 +36,13 @@ zend_class_entry *redis_cluster_ce;
3636
3737/* Exception handler */
3838zend_class_entry * redis_cluster_exception_ce ;
39+
40+ #if (PHP_MAJOR_VERSION < 7 )
3941static zend_class_entry * spl_rte_ce = NULL ;
42+ #else
43+ /* Handlers for RedisCluster */
44+ zend_object_handlers RedisCluster_handlers ;
45+ #endif
4046
4147/* Argument info for HSCAN, SSCAN, HSCAN */
4248ZEND_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) {
263269}
264270
265271/* Create redisCluster context */
272+ #if (PHP_MAJOR_VERSION < 7 )
266273zend_object_value
267274create_cluster_context (zend_class_entry * class_type TSRMLS_DC ) {
268- zend_object_value retval ;
269275 redisCluster * cluster ;
270276
271277 // Allocate our actual struct
272278 cluster = emalloc (sizeof (redisCluster ));
273279 memset (cluster , 0 , sizeof (redisCluster ));
280+ #else
281+ zend_object *
282+ create_cluster_context (zend_class_entry * class_type TSRMLS_DC ) {
283+ redisCluster * cluster ;
284+
285+ // Allocate our actual struct
286+ cluster = emalloc (sizeof (redisCluster ) + sizeof (zval ) * (class_type -> default_properties_count - 1 ));
287+ #endif
274288
275289 // We're not currently subscribed anywhere
276290 cluster -> subscribed_slot = -1 ;
@@ -291,7 +305,8 @@ create_cluster_context(zend_class_entry *class_type TSRMLS_DC) {
291305
292306 // Initialize it
293307 zend_object_std_init (& cluster -> std , class_type TSRMLS_CC );
294-
308+ #if (PHP_MAJOR_VERSION < 7 )
309+ zend_object_value retval ;
295310#if PHP_VERSION_ID < 50399
296311 zval * tmp ;
297312
@@ -306,6 +321,15 @@ create_cluster_context(zend_class_entry *class_type TSRMLS_DC) {
306321 retval .handlers = zend_get_std_object_handlers ();
307322
308323 return retval ;
324+ #else
325+ object_properties_init (& cluster -> std , class_type );
326+ memcpy (& RedisCluster_handlers , zend_get_std_object_handlers (), sizeof (RedisCluster_handlers ));
327+ RedisCluster_handlers .free_obj = free_cluster_context ;
328+
329+ cluster -> std .handlers = & RedisCluster_handlers ;
330+
331+ return & cluster -> std ;
332+ #endif
309333}
310334
311335/* Free redisCluster context */
0 commit comments