Fraser Adams created PROTON-662:
-----------------------------------

             Summary: decoder.c pn_decoder_decode_value has a test that won't 
correctly execute.
                 Key: PROTON-662
                 URL: https://issues.apache.org/jira/browse/PROTON-662
             Project: Qpid Proton
          Issue Type: Bug
          Components: proton-c
            Reporter: Fraser Adams
            Priority: Minor


In decoder.c pn_decoder_decode_value there is a block of code:

        pn_type_t type = pn_code2type(acode);
        if (type < 0) return type;

The test will not execute correctly because pn_type_t is an unsigned 
enumeration. The reason for the test seems to be to trap the case where 
pn_code2type does:
return (pn_type_t) PN_ARG_ERR;

rather than returning the type.

Compiling with Clang rather than gcc flags this warning (which prevents using 
warnings as errors with Clang):

 warning: 
      comparison of unsigned enum expression < 0 is always false
      [-Wtautological-compare]
        if (type < 0) return type;
            ~~~~ ^ ~

Trivial fix is to use correct casting:

        if ((int)type < 0) return (int)type;








--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to