@@ -5037,23 +5037,26 @@ int redis_xadd_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
5037
5037
int redis_xpending_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
5038
5038
char * * cmd , int * cmd_len , short * slot , void * * ctx )
5039
5039
{
5040
+ zend_string * key = NULL , * group = NULL , * start = NULL , * end = NULL ,
5041
+ * consumer = NULL ;
5042
+ zend_long count = -1 , idle = 0 ;
5040
5043
smart_string cmdstr = {0 };
5041
- char * key , * group , * start = NULL , * end = NULL , * consumer = NULL ;
5042
- size_t keylen , grouplen , startlen , endlen , consumerlen ;
5043
5044
int argc ;
5044
- zend_long count = -1 , idle = 0 ;
5045
5045
5046
- // XPENDING mystream group55 - + 10 consumer-123
5047
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "ss|sslsl" , & key ,
5048
- & keylen , & group , & grouplen , & start , & startlen ,
5049
- & end , & endlen , & count , & consumer , & consumerlen ,
5050
- & idle ) == FAILURE )
5051
- {
5052
- return FAILURE ;
5053
- }
5046
+ ZEND_PARSE_PARAMETERS_START (2 , 7 )
5047
+ Z_PARAM_STR (key )
5048
+ Z_PARAM_STR (group )
5049
+ Z_PARAM_OPTIONAL
5050
+ Z_PARAM_STR_OR_NULL (start )
5051
+ Z_PARAM_STR_OR_NULL (end )
5052
+ Z_PARAM_LONG (count )
5053
+ Z_PARAM_STR_OR_NULL (consumer )
5054
+ Z_PARAM_LONG (idle )
5055
+ ZEND_PARSE_PARAMETERS_END_EX (return FAILURE );
5054
5056
5055
5057
/* If we've been passed a start argument, we also need end and count */
5056
5058
if (start != NULL && (end == NULL || count < 0 )) {
5059
+ php_error_docref (NULL , E_WARNING , "'$start' must be accompanied by '$end' and '$count' arguments" );
5057
5060
return FAILURE ;
5058
5061
}
5059
5062
@@ -5062,21 +5065,21 @@ int redis_xpending_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
5062
5065
5063
5066
/* Construct command and add required arguments */
5064
5067
REDIS_CMD_INIT_SSTR_STATIC (& cmdstr , argc , "XPENDING" );
5065
- redis_cmd_append_sstr_key (& cmdstr , key , keylen , redis_sock , slot );
5066
- redis_cmd_append_sstr (& cmdstr , group , grouplen );
5068
+ redis_cmd_append_sstr_key_zstr (& cmdstr , key , redis_sock , slot );
5069
+ redis_cmd_append_sstr_zstr (& cmdstr , group );
5067
5070
5068
5071
/* Add optional argumentst */
5069
5072
if (start ) {
5070
5073
if (idle != 0 ) {
5071
5074
REDIS_CMD_APPEND_SSTR_STATIC (& cmdstr , "IDLE" );
5072
5075
redis_cmd_append_sstr_long (& cmdstr , (long )idle );
5073
5076
}
5074
- redis_cmd_append_sstr (& cmdstr , start , startlen );
5075
- redis_cmd_append_sstr (& cmdstr , end , endlen );
5077
+ redis_cmd_append_sstr_zstr (& cmdstr , start );
5078
+ redis_cmd_append_sstr_zstr (& cmdstr , end );
5076
5079
redis_cmd_append_sstr_long (& cmdstr , (long )count );
5077
5080
5078
5081
/* Finally add consumer if we have it */
5079
- if (consumer ) redis_cmd_append_sstr (& cmdstr , consumer , consumerlen );
5082
+ if (consumer ) redis_cmd_append_sstr_zstr (& cmdstr , consumer );
5080
5083
}
5081
5084
5082
5085
* cmd = cmdstr .c ;
0 commit comments