• Binbin's avatar
    BITCOUNT and BITPOS with non-existing key and illegal arguments should return error, not 0 (#11734) · 1407ac1f
    Binbin authored
    BITCOUNT and BITPOS with non-existing key will return 0 even the
    arguments are error, before this commit:
    ```
    > flushall
    OK
    > bitcount s 0
    (integer) 0
    > bitpos s 0 0 1 hello
    (integer) 0
    
    > set s 1
    OK
    > bitcount s 0
    (error) ERR syntax error
    > bitpos s 0 0 1 hello
    (error) ERR syntax error
    ```
    
    The reason is that we judged non-existing before parameter checking and
    returned. This PR fixes it, and after this commit:
    ```
    > flushall
    OK
    > bitcount s 0
    (error) ERR syntax error
    > bitpos s 0 0 1 hello
    (error) ERR syntax error
    ```
    
    Also BITPOS made the same fix as #12394, check for wrong argument, before
    checking for key.
    ```
    > lpush mylist a b c
    (integer) 3                                                                                    
    > bitpos mylist 1 a b
    (error) WRONGTYPE Operation against a key holding the wrong kind of value
    ```
    1407ac1f
bitops.c 46.8 KB