[PATCH] Fix PR libstdc++/19510: Uninitialized variable in some iterators
Chris Jefferson
caj@cs.york.ac.uk
Thu Jan 20 16:04:00 GMT 2005
Volker Reichelt wrote:
>PR libstdc++/19510 is about a warning that is triggered from within the
>libstdc++ headers. When compiling the following code snippet with
>"-Wall -O3" using mainline
>
>===============================================
>#include<vector>
>#include<list>
>
>std::vector<std::list<int>::iterator> v(1);
>===============================================
>
>the following warning is issued:
>
>/long_path/stl_construct.h: In function 'void
>__static_initialization_and_destruction_0(int, int)':
>/long_path/stl_construct.h:81: warning: 'SR.133' is used uninitialized in this
>function
>
>
>
Just one extra note. This code is actually undefined, as the
initalisation of the std::vector is copying a std::list<int>::iterator.
This is caught if you compile and execute using the the debugging
version of libstdc++. This is no reason to not default-initalise of
course (and I think we should), but any code that triggers this bug is
using undefined behaviour (sorry if this was already obvious to everyone
else, I only just found out it's undefined behaviour if you copy an
uninitalized pointer, you learn something new every day).
Chris
More information about the Gcc-patches
mailing list