File tree 1 file changed +12
-8
lines changed
1 file changed +12
-8
lines changed Original file line number Diff line number Diff line change @@ -5622,15 +5622,18 @@ PHP_REDIS_API void generic_subscribe_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sub
5622
5622
if (zend_hash_index_find (Z_ARRVAL_P (z_tab ), 0 , (void * * )& tmp ) == SUCCESS ) {
5623
5623
type_response = Z_STRVAL_PP (tmp );
5624
5624
if (strcmp (type_response , sub_cmd ) != 0 ) {
5625
- efree (tmp );
5626
- efree (z_tab );
5625
+ efree (tmp );
5626
+ zval_dtor (z_tab );
5627
+ efree (z_tab );
5627
5628
RETURN_FALSE ;
5628
5629
}
5629
5630
} else {
5630
- efree (z_tab );
5631
+ zval_dtor (z_tab );
5632
+ efree (z_tab );
5631
5633
RETURN_FALSE ;
5632
5634
}
5633
- efree (z_tab );
5635
+ zval_dtor (z_tab );
5636
+ efree (z_tab );
5634
5637
5635
5638
/* Set a pointer to our return value and to our arguments. */
5636
5639
z_callback .retval_ptr_ptr = & z_ret ;
@@ -5698,18 +5701,19 @@ PHP_REDIS_API void generic_subscribe_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sub
5698
5701
break ;
5699
5702
}
5700
5703
5701
- /* If we have a return value, free it. Note, we could use the return value to break the subscribe loop */
5704
+ /* Free our return value if we have one. If the return value is a bool
5705
+ * that is FALSE, break our subscribe loop and return control to the
5706
+ * userland code */
5702
5707
if (z_ret ) {
5703
5708
if (Z_TYPE_P (z_ret ) == IS_BOOL && Z_BVAL_P (z_ret ) == 0 ) {
5704
- zval_ptr_dtor (& z_ret );
5709
+ zval_ptr_dtor (& z_ret );
5705
5710
zval_dtor (z_tab );
5706
5711
efree (z_tab );
5707
5712
break ;
5708
5713
}
5714
+ zval_ptr_dtor (& z_ret );
5709
5715
}
5710
- if (z_ret ) zval_ptr_dtor (& z_ret );
5711
5716
5712
- /* TODO: provide a way to break out of the loop. */
5713
5717
zval_dtor (z_tab );
5714
5718
efree (z_tab );
5715
5719
}
You can’t perform that action at this time.
0 commit comments