[jira] Closed: (STDCXX-462) std::time_get example exposes undefined behavior
[ https://issues.apache.org/jira/browse/STDCXX-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Farid Zaripov closed STDCXX-462. > std::time_get example exposes undefined behavior > > > Key: STDCXX-462 > URL: https://issues.apache.org/jira/browse/STDCXX-462 > Project: C++ Standard Library > Issue Type: Bug > Components: Documentation >Affects Versions: 4.1.2, 4.1.3 >Reporter: Martin Sebor >Assignee: Farid Zaripov >Priority: Critical > Fix For: 4.2 > > > The example program demonstrating the use of the std::time_get facet > (http://incubator.apache.org/stdcxx/doc/stdlibref/time-get.html) exposes > undefined behavior. Quoting from the following post > http://www.mail-archive.com/stdcxx-dev@incubator.apache.org/msg03760.html: > Martin Sebor wrote: > > Farid Zaripov wrote: > [...] > >> Btw below is a part of the conforming program (taken from > >> time_get.cpp)? > > > > It's not a conforming program. The locale must stay around as > > long as the last reference to the facet obtained from it. The > > tests that fail to follow this rule should be changed. > > > >> > >> --- > >> const std::time_get &tg = > >> std::use_facet >(std::locale ("C")); > >> > >> // Display time_base::dateorder value. > >> std::cout << "time_base::dateorder == " << tg.date_order () << > >> ".\n"; > >> --- > >> > >> This fragment fails on Dinkumware STL because of tg.date_order() uses > >> (internal) > >> pointer to the destroyed locale object. > > > > Right, and that's allowed. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
Re: [jira] Closed: (STDCXX-462) std::time_get example exposes undefined behavior
Farid Zaripov (JIRA) wrote: [ https://issues.apache.org/jira/browse/STDCXX-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Farid Zaripov closed STDCXX-462. FYI, this is a documentation bug. We need to change the code on the Class Reference page as well: http://incubator.apache.org/stdcxx/doc/stdlibref/time-get.html It sure would be nice to figure out a way to automate these updates between the example sources and the code in the docs. A couple of possible approaches are here: http://www.mail-archive.com/stdcxx-dev@incubator.apache.org/msg03284.html Any other ideas? Martin std::time_get example exposes undefined behavior Key: STDCXX-462 URL: https://issues.apache.org/jira/browse/STDCXX-462 Project: C++ Standard Library Issue Type: Bug Components: Documentation Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor Assignee: Farid Zaripov Priority: Critical Fix For: 4.2 The example program demonstrating the use of the std::time_get facet (http://incubator.apache.org/stdcxx/doc/stdlibref/time-get.html) exposes undefined behavior. Quoting from the following post http://www.mail-archive.com/stdcxx-dev@incubator.apache.org/msg03760.html: Martin Sebor wrote: Farid Zaripov wrote: [...] Btw below is a part of the conforming program (taken from time_get.cpp)? It's not a conforming program. The locale must stay around as long as the last reference to the facet obtained from it. The tests that fail to follow this rule should be changed. --- const std::time_get &tg = std::use_facet >(std::locale ("C")); // Display time_base::dateorder value. std::cout << "time_base::dateorder == " << tg.date_order () << ".\n"; --- This fragment fails on Dinkumware STL because of tg.date_order() uses (internal) pointer to the destroyed locale object. Right, and that's allowed.
[jira] Closed: (STDCXX-462) std::time_get example exposes undefined behavior
[ https://issues.apache.org/jira/browse/STDCXX-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Farid Zaripov closed STDCXX-462. > std::time_get example exposes undefined behavior > > > Key: STDCXX-462 > URL: https://issues.apache.org/jira/browse/STDCXX-462 > Project: C++ Standard Library > Issue Type: Bug > Components: Documentation >Affects Versions: 4.1.3, 4.1.2 >Reporter: Martin Sebor >Assignee: Farid Zaripov >Priority: Critical > Fix For: 4.2 > > > The example program demonstrating the use of the std::time_get facet > (http://incubator.apache.org/stdcxx/doc/stdlibref/time-get.html) exposes > undefined behavior. Quoting from the following post > http://www.mail-archive.com/stdcxx-dev@incubator.apache.org/msg03760.html: > Martin Sebor wrote: > > Farid Zaripov wrote: > [...] > >> Btw below is a part of the conforming program (taken from > >> time_get.cpp)? > > > > It's not a conforming program. The locale must stay around as > > long as the last reference to the facet obtained from it. The > > tests that fail to follow this rule should be changed. > > > >> > >> --- > >> const std::time_get &tg = > >> std::use_facet >(std::locale ("C")); > >> > >> // Display time_base::dateorder value. > >> std::cout << "time_base::dateorder == " << tg.date_order () << > >> ".\n"; > >> --- > >> > >> This fragment fails on Dinkumware STL because of tg.date_order() uses > >> (internal) > >> pointer to the destroyed locale object. > > > > Right, and that's allowed. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.