[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