@@ -2023,11 +2023,10 @@ PHP_METHOD(Redis, discard)
20232023
20242024PHP_REDIS_API int
20252025redis_sock_read_multibulk_multi_reply (INTERNAL_FUNCTION_PARAMETERS ,
2026- RedisSock * redis_sock )
2026+ RedisSock * redis_sock , zval * z_tab )
20272027{
20282028
20292029 char inbuf [4096 ];
2030- int numElems ;
20312030 size_t len ;
20322031
20332032 if (redis_sock_gets (redis_sock , inbuf , sizeof (inbuf ) - 1 , & len ) < 0 ||
@@ -2036,10 +2035,10 @@ redis_sock_read_multibulk_multi_reply(INTERNAL_FUNCTION_PARAMETERS,
20362035 return FAILURE ;
20372036 }
20382037
2039- array_init (return_value );
2038+ array_init (z_tab );
20402039
20412040 return redis_sock_read_multibulk_multi_reply_loop (INTERNAL_FUNCTION_PARAM_PASSTHRU ,
2042- redis_sock , return_value );
2041+ redis_sock , z_tab );
20432042}
20442043
20452044
@@ -2049,7 +2048,7 @@ PHP_METHOD(Redis, exec)
20492048 RedisSock * redis_sock ;
20502049 char * cmd ;
20512050 int cmd_len , ret ;
2052- zval * object ;
2051+ zval * object , z_ret ;
20532052
20542053 if (zend_parse_method_parameters (ZEND_NUM_ARGS (), getThis (),
20552054 "O" , & object , redis_ce ) == FAILURE ||
@@ -2070,31 +2069,32 @@ PHP_METHOD(Redis, exec)
20702069 SOCKET_WRITE_COMMAND (redis_sock , cmd , cmd_len )
20712070 efree (cmd );
20722071
2072+ ZVAL_NULL (& z_ret );
20732073 ret = redis_sock_read_multibulk_multi_reply (
2074- INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock );
2074+ INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , & z_ret );
20752075 free_reply_callbacks (redis_sock );
20762076 REDIS_DISABLE_MODE (redis_sock , MULTI );
20772077 redis_sock -> watching = 0 ;
20782078 if (ret < 0 ) {
2079- zval_dtor (return_value );
2080- RETURN_FALSE ;
2079+ zval_dtor (& z_ret );
2080+ ZVAL_FALSE ( & z_ret ) ;
20812081 }
20822082 }
20832083
20842084 if (IS_PIPELINE (redis_sock )) {
20852085 if (redis_sock -> pipeline_cmd == NULL ) {
20862086 /* Empty array when no command was run. */
2087- array_init (return_value );
2087+ array_init (& z_ret );
20882088 } else {
20892089 if (redis_sock_write (redis_sock , ZSTR_VAL (redis_sock -> pipeline_cmd ),
20902090 ZSTR_LEN (redis_sock -> pipeline_cmd )) < 0 ) {
2091- ZVAL_FALSE (return_value );
2091+ ZVAL_FALSE (& z_ret );
20922092 } else {
2093- array_init (return_value );
2093+ array_init (& z_ret );
20942094 if (redis_sock_read_multibulk_multi_reply_loop (
2095- INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , return_value ) != SUCCESS ) {
2096- zval_dtor (return_value );
2097- RETVAL_FALSE ;
2095+ INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , & z_ret ) != SUCCESS ) {
2096+ zval_dtor (& z_ret );
2097+ ZVAL_FALSE ( & z_ret ) ;
20982098 }
20992099 }
21002100 zend_string_release (redis_sock -> pipeline_cmd );
@@ -2103,6 +2103,7 @@ PHP_METHOD(Redis, exec)
21032103 free_reply_callbacks (redis_sock );
21042104 REDIS_DISABLE_MODE (redis_sock , PIPELINE );
21052105 }
2106+ RETURN_ZVAL (& z_ret , 1 , 0 );
21062107}
21072108
21082109PHP_REDIS_API int
0 commit comments