@@ -89,28 +89,28 @@ static void redis_array_free(RedisArray *ra) {
89
89
90
90
/* Redis objects */
91
91
for (i = 0 ;i < ra -> count ;i ++ ) {
92
- zval_dtor (ra -> redis [i ]);
93
- efree (ra -> redis [i ]);
94
- efree (ra -> hosts [i ]);
92
+ zval_dtor (& ra -> redis [i ]);
93
+ efree (& ra -> redis [i ]);
94
+ efree (& ra -> hosts [i ]);
95
95
}
96
96
efree (ra -> redis );
97
97
efree (ra -> hosts );
98
98
99
99
/* delete hash function */
100
- if (ra -> z_fun ) {
101
- zval_dtor (ra -> z_fun );
102
- efree (ra -> z_fun );
100
+ if (Z_TYPE ( ra -> z_fun ) != IS_UNDEF ) {
101
+ zval_dtor (& ra -> z_fun );
102
+ efree (& ra -> z_fun );
103
103
}
104
104
105
105
/* Distributor */
106
- if (ra -> z_dist ) {
107
- zval_dtor (ra -> z_dist );
108
- efree (ra -> z_dist );
106
+ if (Z_TYPE ( ra -> z_dist ) != IS_UNDEF ) {
107
+ zval_dtor (& ra -> z_dist );
108
+ efree (& ra -> z_dist );
109
109
}
110
110
111
111
/* Delete pur commands */
112
- zval_dtor (ra -> z_pure_cmds );
113
- efree (ra -> z_pure_cmds );
112
+ zval_dtor (& ra -> z_pure_cmds );
113
+ efree (& ra -> z_pure_cmds );
114
114
115
115
/* Free structure itself */
116
116
efree (ra );
@@ -515,9 +515,8 @@ PHP_METHOD(RedisArray, _function)
515
515
RETURN_FALSE ;
516
516
}
517
517
518
- if (ra -> z_fun ) {
519
- * return_value = * ra -> z_fun ;
520
- zval_copy_ctor (return_value );
518
+ if (Z_TYPE (ra -> z_fun ) != IS_UNDEF ) {
519
+ ZVAL_DUP (return_value , & ra -> z_fun );
521
520
} else {
522
521
RETURN_NULL ();
523
522
}
@@ -537,9 +536,8 @@ PHP_METHOD(RedisArray, _distributor)
537
536
RETURN_FALSE ;
538
537
}
539
538
540
- if (ra -> z_fun ) {
541
- * return_value = * ra -> z_fun ;
542
- zval_copy_ctor (return_value );
539
+ if (Z_TYPE (ra -> z_fun ) != IS_UNDEF ) {
540
+ ZVAL_DUP (return_value , & ra -> z_fun );
543
541
} else {
544
542
RETURN_NULL ();
545
543
}
@@ -592,8 +590,7 @@ static void multihost_distribute(INTERNAL_FUNCTION_PARAMETERS, const char *metho
592
590
ZVAL_UNDEF (& z_tmp );
593
591
594
592
/* Call each node in turn */
595
- call_user_function (& redis_ce -> function_table , ra -> redis [i ],
596
- & z_fun , & z_tmp , 0 , NULL TSRMLS_CC );
593
+ call_user_function (& redis_ce -> function_table , & ra -> redis [i ], & z_fun , & z_tmp , 0 , NULL TSRMLS_CC );
597
594
598
595
add_assoc_zval (return_value , ra -> hosts [i ], & z_tmp );
599
596
}
@@ -664,7 +661,7 @@ PHP_METHOD(RedisArray, keys)
664
661
ZVAL_UNDEF (& z_tmp );
665
662
666
663
/* Call KEYS on each node */
667
- call_user_function (& redis_ce -> function_table , ra -> redis [i ], & z_fun , & z_tmp , 1 , z_args TSRMLS_CC );
664
+ call_user_function (& redis_ce -> function_table , & ra -> redis [i ], & z_fun , & z_tmp , 1 , z_args TSRMLS_CC );
668
665
669
666
/* Add the result for this host */
670
667
add_assoc_zval (return_value , ra -> hosts [i ], & z_tmp );
@@ -702,7 +699,7 @@ PHP_METHOD(RedisArray, getOption)
702
699
ZVAL_UNDEF (& z_tmp );
703
700
704
701
/* Call each node in turn */
705
- call_user_function (& redis_ce -> function_table , ra -> redis [i ],
702
+ call_user_function (& redis_ce -> function_table , & ra -> redis [i ],
706
703
& z_fun , & z_tmp , 1 , z_args TSRMLS_CC );
707
704
708
705
add_assoc_zval (return_value , ra -> hosts [i ], & z_tmp );
@@ -743,7 +740,7 @@ PHP_METHOD(RedisArray, setOption)
743
740
ZVAL_UNDEF (& z_tmp );
744
741
745
742
/* Call each node in turn */
746
- call_user_function (& redis_ce -> function_table , ra -> redis [i ],
743
+ call_user_function (& redis_ce -> function_table , & ra -> redis [i ],
747
744
& z_fun , & z_tmp , 2 , z_args TSRMLS_CC );
748
745
749
746
add_assoc_zval (return_value , ra -> hosts [i ], & z_tmp );
@@ -782,7 +779,7 @@ PHP_METHOD(RedisArray, select)
782
779
ZVAL_UNDEF (& z_tmp );
783
780
784
781
/* Call each node in turn */
785
- call_user_function (& redis_ce -> function_table , ra -> redis [i ],
782
+ call_user_function (& redis_ce -> function_table , & ra -> redis [i ],
786
783
& z_fun , & z_tmp , 1 , z_args TSRMLS_CC );
787
784
788
785
add_assoc_zval (return_value , ra -> hosts [i ], & z_tm
B41A
p );
@@ -908,7 +905,7 @@ PHP_METHOD(RedisArray, mget)
908
905
}
909
906
910
907
/* call MGET on the node */
911
- call_user_function (& redis_ce -> function_table , ra -> redis [n ],
908
+ call_user_function (& redis_ce -> function_table , & ra -> redis [n ],
912
909
& z_fun , & z_ret , 1 , & z_argarray TSRMLS_CC );
913
910
914
911
/* cleanup args array */
@@ -1034,7 +1031,7 @@ PHP_METHOD(RedisArray, mset)
1034
1031
1035
1032
/* prepare call */
1036
1033
ZVAL_STRING (& z_fun , "MSET" );
1037
- redis_inst = ra -> redis [n ];
1034
+ redis_inst = & ra -> redis [n ];
1038
1035
1039
1036
/* copy args */
1040
1037
array_init (& z_argarray );
@@ -1061,7 +1058,7 @@ PHP_METHOD(RedisArray, mset)
1061
1058
}
1062
1059
1063
1060
/* call */
1064
- call_user_function (& redis_ce -> function_table , ra -> redis [n ],
1061
+ call_user_function (& redis_ce -> function_table , & ra -> redis [n ],
1065
1062
& z_fun , & z_ret , 1 , & z_argarray TSRMLS_CC );
1066
1063
1067
1064
if (ra -> index ) {
@@ -1166,7 +1163,7 @@ PHP_METHOD(RedisArray, del)
1166
1163
for (n = 0 ; n < ra -> count ; ++ n ) { /* for each node */
1167
1164
1168
1165
int found = 0 ;
1169
- redis_inst = ra -> redis [n ];
1166
+ redis_inst = & ra -> redis [n ];
1170
1167
1171
1168
/* copy args */
1172
1169
array_init (& z_argarray );
0 commit comments