@@ -3684,28 +3684,27 @@ int redis_select_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
36843684
36853685/* SRANDMEMBER */
36863686int redis_srandmember_cmd (INTERNAL_FUNCTION_PARAMETERS , RedisSock * redis_sock ,
3687- char * * cmd , int * cmd_len , short * slot , void * * ctx ,
3688- short * have_count )
3687+ char * * cmd , int * cmd_len , short * slot , void * * ctx )
36893688{
3690- char * key ;
3691- size_t key_len ;
3692- zend_long count ;
3689+ uint32_t argc = ZEND_NUM_ARGS ();
3690+ smart_string cmdstr = {0 };
3691+ zend_long count = 0 ;
3692+ zend_string * key ;
36933693
3694- if ( zend_parse_parameters ( ZEND_NUM_ARGS (), "s|l" , & key , & key_len ,
3695- & count ) == FAILURE )
3696- {
3697- return FAILURE ;
3698- }
3694+ ZEND_PARSE_PARAMETERS_START ( 1 , 2 )
3695+ Z_PARAM_STR ( key )
3696+ Z_PARAM_OPTIONAL
3697+ Z_PARAM_LONG ( count )
3698+ ZEND_PARSE_PARAMETERS_END_EX ( return FAILURE );
36993699
3700- // Set our have count flag
3701- * have_count = ZEND_NUM_ARGS () == 2 ;
3700+ REDIS_CMD_INIT_SSTR_STATIC (& cmdstr , ZEND_NUM_ARGS (), "SRANDMEMBER" );
3701+ redis_cmd_append_sstr_key_zstr (& cmdstr , key , redis_sock , slot );
3702+ if (argc == 2 )
3703+ redis_cmd_append_sstr_long (& cmdstr , count );
37023704
3703- // Two args means we have the optional COUNT
3704- if (* have_count ) {
3705- * cmd_len = REDIS_CMD_SPPRINTF (cmd , "SRANDMEMBER" , "kl" , key , key_len , count );
3706- } else {
3707- * cmd_len = REDIS_CMD_SPPRINTF (cmd , "SRANDMEMBER" , "k" , key , key_len );
3708- }
3705+ * cmd = cmdstr .c ;
3706+ * cmd_len = cmdstr .len ;
3707+ * ctx = argc == 2 ? PHPREDIS_CTX_PTR : NULL ;
37093708
37103709 return SUCCESS ;
37113710}
0 commit comments