@@ -529,20 +529,28 @@ redis_failover_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
529529int redis_flush_cmd (INTERNAL_FUNCTION_PARAMETERS ,RedisSock * redis_sock ,
530530char * kw ,char * * cmd ,int * cmd_len ,short * slot ,void * * ctx )
531531{
532- int sync = -1 ;
532+ smart_string cmdstr = {0 };
533+ zend_bool sync = 0 ;
534+ zend_bool is_null = 1 ;
533535
534- if (zend_parse_parameters (ZEND_NUM_ARGS (),"|b" ,& sync )== FAILURE ) {
535- return FAILURE ;
536- }
536+ ZEND_PARSE_PARAMETERS_START (0 ,1 )
537+ Z_PARAM_OPTIONAL
538+ Z_PARAM_BOOL_OR_NULL (sync ,is_null )
539+ ZEND_PARSE_PARAMETERS_END_EX (return FAILURE );
537540
538- if (sync < 0 ) {
539- * cmd_len = REDIS_CMD_SPPRINTF (cmd ,kw ,"" );
540- }else if (sync > 0 ) {
541- * cmd_len = REDIS_CMD_SPPRINTF (cmd ,kw ,"s" ,"SYNC" ,sizeof ("SYNC" )- 1 );
542- }else {
543- * cmd_len = REDIS_CMD_SPPRINTF (cmd ,kw ,"s" ,"ASYNC" ,sizeof ("ASYNC" )- 1 );
541+ redis_cmd_init_sstr (& cmdstr , !is_null ,kw ,strlen (kw ));
542+ if (!is_null ) {
543+ ZEND_ASSERT (sync == 0 || sync == 1 );
544+ if (sync == 0 ) {
545+ REDIS_CMD_APPEND_SSTR_STATIC (& cmdstr ,"ASYNC" );
546+ }else {
547+ REDIS_CMD_APPEND_SSTR_STATIC (& cmdstr ,"SYNC" );
548+ }
544549 }
545550
551+ * cmd = cmdstr .c ;
552+ * cmd_len = cmdstr .len ;
553+
546554return SUCCESS ;
547555}
548556