------- Comment #13 from pluto at agmk dot net  2006-08-10 09:58 -------
in fact it was a gcc bug.

gcc version 4.1.2 20060530 gives wrong code.
gcc version 4.1.2 20060712 gives correct code.

tree dump shows that gcc-20060530 removes some parts [*] of vector_base
initialization and finally crash during freeing invalid pointer.

--- ok/bug.cpp.t97.final_cleanup        2006-08-10 11:48:19.769723000 +0200
+++ err/bug.cpp.t97.final_cleanup       2006-08-10 11:47:33.802850250 +0200

-  l.D.11626._M_node._M_data._M_next = &l.D.11626._M_node._M_data;
-  l.D.11626._M_node._M_data._M_prev = &l.D.11626._M_node._M_data;
-  v.D.12155._M_start = 0B;                      <== [*]
-  v.D.12155._M_end_of_storage._M_data = 0B;     <== [*]
-  v.D.12155._M_finish = 0B;                     <== [*]
+  l.D.11607._M_node._M_data._M_next = &l.D.11607._M_node._M_data;
+  l.D.11607._M_node._M_data._M_prev = &l.D.11607._M_node._M_data;


-- 

pluto at agmk dot net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27156

Reply via email to