libstdc++/9582: ODR violation in std::allocator
peturr02@ru.is
peturr02@ru.is
Wed Feb 5 10:56:00 GMT 2003
>Number: 9582
>Category: libstdc++
>Synopsis: ODR violation in std::allocator
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Feb 05 10:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: peturr02@ru.is
>Release: gcc 3.4 from 20030205
>Organization:
>Environment:
Red Hat Linux 8.0
>Description:
std::allocator<>::allocate calls __pool_alloc<>::allocate which uses the macro assert. The definition of assert depends on whether NDEBUG is defined before stl_alloc.h is included. If NDEBUG is defined in one source file before stl_alloc.h is included, but not in another source file, and those files are then linked together, the one-definition-rule is broken.
Also, as a QoI issue, I think that the contents of standard headers (other than cassert) should not depend on the macro NDEBUG, and cassert should not be included by other standard headers.
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list