[Bug libstdc++/10081] basic_ios::_M_cache_locale leaves NULL members in the face of unknown locales

pme@gcc.gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jun 9 15:21:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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


pme@gcc.gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2003-06-08 08:15:25         |2003-06-09 15:21:57
               date|                            |
            Summary|basic_ios constructor fails |basic_ios::_M_cache_locale
                   |to initialize variables     |leaves NULL members in the
                   |                            |face of unknown locales


------- Additional Comments From pme@gcc.gnu.org  2003-06-09 15:21 -------
Well, don't say that the members aren't being initialized, because they are:

      explicit
      basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
      : ios_base(), _M_ctype(0), _M_num_put(0), _M_num_get(0)
      { this->init(__sb); }

(The names of the variables were changed mid-May.)

The crash is because _M_ctype is still NULL when op>> is executed, leading to
a NULL facet argument in __check_facet.  basic_ios::init makes an attempt to
cache the facet, but since has_facet is (I expect) false for pod_char, the
members are not assigned new values.

I don't know what the Right Thing is here.



More information about the Gcc-bugs mailing list