incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: [jira] Closed: (STDCXX-462) std::time_get example exposes undefined behavior
Date Tue, 26 Jun 2007 18:21:10 GMT
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<char, Iter> &tg =
>>>>         std::use_facet<std::time_get<char, Iter> >(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.
> 


Mime
View raw message