qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zane Bitter (JIRA)" <j...@apache.org>
Subject [jira] [Created] (QPID-3344) Comparisons of const DataAddr objects are incorrect
Date Thu, 07 Jul 2011 13:40:16 GMT
Comparisons of const DataAddr objects are incorrect

                 Key: QPID-3344
                 URL: https://issues.apache.org/jira/browse/QPID-3344
             Project: Qpid
          Issue Type: Bug
          Components: Qpid Managment Framework
    Affects Versions: 0.10
         Environment: Fedora 15, not that it matters.
            Reporter: Zane Bitter
            Assignee: Ted Ross

The following program results in incorrect output:

// g++ test.cpp -o test -lqmf2

#include <qmf/DataAddr.h>
#include <iostream>

int main(void)
    qmf::DataAddr foo("foo", "blarg", 1);
    const qmf::DataAddr bar("bar", "wibble", 2);

    // prints "false"
    std::cout << "foo == bar: " << (foo == bar ? "true" : "false") << "\n";

    // prints "true" (Doh!)
    std::cout << "bar == foo: " << (bar == foo ? "true" : "false") << "\n";

    return 0;

Anywhere where two DataAddr objects are compared and the first is a const reference will give
a bogus result. (Specifically, both operands are converted to bool before being compared.)
The reason is that DataAddr::operator==() is not declared const, so it will not be used to
compare const references, and that C++ is pure, unadulterated evil.

Not that qmf::Data::getAddr() returns a const qmf::DataAddr&, so this is likely to be
a common problem. Some other APIs, such as qmf::AgentEvent::getDataAddr() return non-const
references, which would be unaffected (unless they become const at some point in the call

A patch will follow presently.

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org

View raw message