@@ -649,21 +649,23 @@ redis_zrandmember_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
649649 smart_string cmdstr = {0 };
650650 zend_bool withscores = 0 ;
651651 zval * z_opts = NULL , * z_ele ;
652+ zend_string * zkey ;
652653
653654 if (zend_parse_parameters (ZEND_NUM_ARGS (), "s|a" ,
654655 & key , & key_len , & z_opts ) == FAILURE )
655656 {
656657 return FAILURE ;
657658 }
658659
659- if (z_opts && Z_TYPE_P (z_opts ) == IS_ARRAY ) {
660- zend_string * zkey ;
660+ if (z_opts != NULL ) {
661661 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (z_opts ), zkey , z_ele ) {
662- ZVAL_DEREF (z_ele );
663- if (zend_string_equals_literal_ci (zkey , "count" )) {
664- count = zval_get_long (z_ele );
665- } else if (zend_string_equals_literal_ci (zkey , "withscores" )) {
666- withscores = zval_is_true (z_ele );
662+ if (zkey != NULL ) {
663+ ZVAL_DEREF (z_ele );
664+ if (zend_string_equals_literal_ci (zkey , "count" )) {
665+ count = zval_get_long (z_ele );
666+ } else if (zend_string_equals_literal_ci (zkey , "withscores" )) {
667+ withscores = zval_is_true (z_ele );
668+ }
667669 }
668670 } ZEND_HASH_FOREACH_END ();
669671 }
@@ -695,6 +697,7 @@ redis_zdiff_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
695697 smart_string cmdstr = {0 };
696698 zval * z_keys , * z_opts = NULL , * z_ele ;
697699 zend_bool withscores = 0 ;
700+ zend_string * zkey ;
698701
699702 if (zend_parse_parameters (ZEND_NUM_ARGS (), "a|a" ,
700703 & z_keys , & z_opts ) == FAILURE )
@@ -706,8 +709,7 @@ redis_zdiff_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
706709 return FAILURE ;
707710 }
708711
709- if (z_opts && Z_TYPE_P (z_opts ) == IS_ARRAY ) {
710- zend_string * zkey ;
712+ if (z_opts != NULL ) {
711713 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (z_opts ), zkey , z_ele ) {
712714 if (zkey != NULL ) {
713715 ZVAL_DEREF (z_ele );
@@ -780,7 +782,7 @@ redis_zinterunion_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
780782 int numkeys ;
781783 smart_string cmdstr = {0 };
782784 zval * z_keys , * z_weights = NULL , * z_opts = NULL , * z_ele ;
783- zend_string * aggregate = NULL ;
785+ zend_string * aggregate = NULL , * zkey ;
784786 zend_bool withscores = 0 ;
785787
786788 if (zend_parse_parameters (ZEND_NUM_ARGS (), "a|a!a" ,
@@ -801,8 +803,7 @@ redis_zinterunion_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
801803 }
802804 }
803805
804- if (z_opts && Z_TYPE_P (z_opts ) == IS_ARRAY ) {
805- zend_string * zkey ;
806+ if (z_opts != NULL ) {
806807 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (z_opts ), zkey , z_ele ) {
807808 if (zkey != NULL ) {
808809 ZVAL_DEREF (z_ele );
@@ -2558,21 +2559,23 @@ redis_hrandfield_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
25582559 smart_string cmdstr = {0 };
25592560 zend_bool withvalues = 0 ;
25602561 zval * z_opts = NULL , * z_ele ;
2562+ zend_string * zkey ;
25612563
25622564 if (zend_parse_parameters (ZEND_NUM_ARGS (), "s|a" ,
25632565 & key , & key_len , & z_opts ) == FAILURE )
25642566 {
25652567 return FAILURE ;
25662568 }
25672569
2568- if (z_opts && Z_TYPE_P (z_opts ) == IS_ARRAY ) {
2569- zend_string * zkey ;
2570+ if (z_opts != NULL ) {
25702571 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (z_opts ), zkey , z_ele ) {
2571- ZVAL_DEREF (z_ele );
2572- if (zend_string_equals_literal_ci (zkey , "count" )) {
2573- count = zval_get_long (z_ele );
2574- } else if (zend_string_equals_literal_ci (zkey , "withvalues" )) {
2575- withvalues = zval_is_true (z_ele );
2572+ if (zkey != NULL ) {
2573+ ZVAL_DEREF (z_ele );
2574+ if (zend_string_equals_literal_ci (zkey , "count" )) {
2575+ count = zval_get_long (z_ele );
2576+ } else if (zend_string_equals_literal_ci (zkey , "withvalues" )) {
2577+ withvalues = zval_is_true (z_ele );
2578+ }
25762579 }
25772580 } ZEND_HASH_FOREACH_END ();
25782581 }
@@ -3379,7 +3382,7 @@ redis_geosearch_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
33793382 }
33803383
33813384 /* Attempt to parse our options array */
3382- if (opts != NULL && Z_TYPE_P ( opts ) == IS_ARRAY ) {
3385+ if (opts != NULL ) {
33833386 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (opts ), zkey , z_ele ) {
33843387 ZVAL_DEREF (z_ele );
33853388 if (zkey != NULL ) {
@@ -3502,7 +3505,7 @@ redis_geosearchstore_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
35023505 }
35033506
35043507 /* Attempt to parse our options array */
3505- if (opts != NULL && Z_TYPE_P ( opts ) == IS_ARRAY ) {
3508+ if (opts != NULL ) {
35063509 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (opts ), zkey , z_ele ) {
35073510 ZVAL_DEREF (z_ele );
35083511 if (zkey != NULL ) {
@@ -3824,17 +3827,16 @@ redis_copy_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
38243827 size_t src_len , dst_len ;
38253828 zend_long db = -1 ;
38263829 zend_bool replace = 0 ;
3827- zval * opts = NULL ;
3830+ zval * opts = NULL , * z_ele ;
3831+ zend_string * zkey ;
38283832
38293833 if (zend_parse_parameters (ZEND_NUM_ARGS (), "ss|a" ,
38303834 & src , & src_len , & dst , & dst_len , & opts ) == FAILURE )
38313835 {
38323836 return FAILURE ;
38333837 }
38343838
3835- if (opts != NULL && Z_TYPE_P (opts ) == IS_ARRAY ) {
3836- zend_string * zkey ;
3837- zval * z_ele ;
3839+ if (opts != NULL ) {
38383840 ZEND_HASH_FOREACH_STR_KEY_VAL (Z_ARRVAL_P (opts ), zkey , z_ele ) {
38393841 if (zkey != NULL ) {
38403842 ZVAL_DEREF (z_ele );
0 commit comments