@@ -5037,23 +5037,26 @@ int redis_xadd_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
50375037int redis_xpending_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
50385038 char * * cmd , int * cmd_len , short * slot , void * * ctx )
50395039{
5040+ zend_string * key = NULL , * group = NULL , * start = NULL , * end = NULL ,
5041+ * consumer = NULL ;
5042+ zend_long count = -1 , idle = 0 ;
50405043 smart_string cmdstr = {0 };
5041- char * key , * group , * start = NULL , * end = NULL , * consumer = NULL ;
5042- size_t keylen , grouplen , startlen , endlen , consumerlen ;
50435044 int argc ;
5044- zend_long count = -1 , idle = 0 ;
50455045
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 );
50545056
50555057 /* If we've been passed a start argument, we also need end and count */
50565058 if (start != NULL && (end == NULL || count < 0 )) {
5059+ php_error_docref (NULL , E_WARNING , "'$start' must be accompanied by '$end' and '$count' arguments" );
50575060 return FAILURE ;
50585061 }
50595062
@@ -5062,21 +5065,21 @@ int redis_xpending_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
50625065
50635066 /* Construct command and add required arguments */
50645067 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 );
50675070
50685071 /* Add optional argumentst */
50695072 if (start ) {
50705073 if (idle != 0 ) {
50715074 REDIS_CMD_APPEND_SSTR_STATIC (& cmdstr , "IDLE" );
50725075 redis_cmd_append_sstr_long (& cmdstr , (long )idle );
50735076 }
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 );
50765079 redis_cmd_append_sstr_long (& cmdstr , (long )count );
50775080
50785081 /* 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 );
50805083 }
50815084
50825085 * cmd = cmdstr .c ;
0 commit comments