This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix PR libstdc++/19510: Uninitialized variable in someiterators


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]