[ 
https://issues.apache.org/jira/browse/QPID-3344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Ross resolved QPID-3344.
----------------------------

       Resolution: Fixed
    Fix Version/s: 0.13

> 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
>             Fix For: 0.13
>
>         Attachments: qpid-DataAddr-const-compare-ABI-stable.patch, 
> qpid-DataAddr-const-compare.patch
>
>
> The following program results in incorrect output:
> {code:title=test.cpp}
> // 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;
> }
> {code}
> 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 chain).
> 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-subscr...@qpid.apache.org

Reply via email to