[jira] Updated: (STDCXX-93) [MSVC 8.0] time_get crashes when calling get_date

2007-07-02 Thread Martin Sebor (JIRA)

 [ 
https://issues.apache.org/jira/browse/STDCXX-93?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Sebor updated STDCXX-93:
---

Summary: [MSVC 8.0] time_get crashes when calling get_date  (was: time_get 
crashes when calling get_date ( Visual C++ 8.0 ))

Tweaked Summary to conform to convention.

> [MSVC 8.0] time_get crashes when calling get_date
> -
>
> Key: STDCXX-93
> URL: https://issues.apache.org/jira/browse/STDCXX-93
> Project: C++ Standard Library
>  Issue Type: Bug
>  Components: Examples
> Environment: Visual C++ 8.0
>Reporter: Vikas Mehta
>Assignee: Martin Sebor
> Fix For: 4.2
>
>
> Test case:
> // Following code snippet is taken from examples\manual\time_get.cpp
> // NOTE: A SunPro bug requires time.h preceed locale. PR #26255
> #include   // for struct tm
> #include  // for locale, time_get
> #include // for stringstream
> #include// for cout, endl
> // Print out a tm struct value in one atomic operation
> std::ostream& operator<< (std::ostream &os, const std::tm &t)
> {
> std::stringstream strm;
> strm << "Daylight Savings = "   << t.tm_isdst
>  << "\nDay of year  = " << t.tm_yday
>  << "\nDay of week  = " << t.tm_wday
>  << "\nYear = " << t.tm_year
>  << "\nMonth= " << t.tm_mon
>  << "\nDay of month = " << t.tm_mday
>  << "\nHour = " << t.tm_hour
>  << "\nMinute   = " << t.tm_min
>  << "\nSecond   = " << t.tm_sec
>  << '\n';
> // guard for thread safety and output synchronization
> const std::ostream::sentry guard (os);
> if (guard)
> os.rdbuf ()->sputn (strm.str ().c_str (), strm.str ().size ());
> else
> os.setstate (os.failbit);
> return os;
> }
> int main ()
> {
> typedef std::istreambuf_iterator > Iter;
> // time struct to parse date into
> static std::tm timeb;  // zero initialized
> // Unused, required by time_get
> std::ios_base::iostate state;
> // Stream object to read from
> std::istringstream ins ("");
> // Iterators into the stream object
> Iter begin (ins);
> Iter end;
> // Get a reference to the time_get facet in locale loc.
> 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";
>   
> // Insert date string into stream.
> ins.str ("04/07/69");
> // get_date from the stream and output tm contents.
> tg.get_date (begin, end, ins, state, &timeb);
> std::cout << "Date: Apr 7 1969\n" << timeb << std::endl;
> return 0;
> }
> Stack Trace:
> > msvcr80d.dll!_mbstowcs_l_helper(wchar_t * pwcs=0x008e2b78, const char * 
> > s=0x008e6008, unsigned int n=1812, localeinfo_struct * plocinfo=0x0012f740) 
> >  Line 71C++
>   msvcr80d.dll!_mbstowcs_s_l(unsigned int * pConvertedChars=0x0012f7b0, 
> wchar_t * pwcs=0x008e2b78, unsigned int sizeInWords=1812, const char * 
> s=0x008e6008, unsigned int n=4294967295, localeinfo_struct * 
> plocinfo=0x0012f7d4)  Line 259 + 0x30 bytes   C++
>   msvcr80d.dll!_wcsftime_l_stat(wchar_t * wstring=0x008e2b78, unsigned 
> int maxsize=1812, const wchar_t * wformat=0x00473980, const tm * 
> timeptr=0x0012f858, localeinfo_struct * plocinfo=0x0012f7d4)  Line 101 + 0x32 
> bytes   C++
>   msvcr80d.dll!_wcsftime_l(wchar_t * wstring=0x008e2b78, unsigned int 
> maxsize=1812, const wchar_t * wformat=0x00473980, const tm * 
> timeptr=0x0012f858, localeinfo_struct * plocinfo=0x)  Line 152 + 0x1e 
> bytesC++
>   msvcr80d.dll!wcsftime(wchar_t * wstring=0x008e2b78, unsigned int 
> maxsize=1812, const wchar_t * wformat=0x00473980, const tm * 
> timeptr=0x0012f858)  Line 162 + 0x17 bytesC++
>   time_get.exe!__rw::__rw_get_timepunct(const __rw::__rw_facet * 
> pfacet=0x0049465c, int flags=64, unsigned int inx=0)  Line 695 + 0x28 bytes   
>C++
>   time_get.exe!__rw::__rw_get_timepunct(const __rw::__rw_facet * 
> pfacet=0x0049465c, int flags=64, const void * * names=0x0012fc40, unsigned 
> int * sizes=0x0012faa8)  Line 1115 + 0x11 bytes   C++
>   time_get.exe!__rw::__rw_get_timepunct(const __rw::__rw_facet * 
> pfacet=0x0049465c, int * data=0x0012fa4c, tm * tmb=0x0012fa78, int * * 
> pmem=0x0012fa6c, const void * * names=0x0012fc40, unsigned int * 
> sizes=0x0012faa8)  Line 1452 + 0x23 bytesC++
>   
> time_get.exe!std::time_get
>  > >::do_get(std::istreambuf_iterator > 
> __it={...}, std::istreambuf_iterator > 
> __end={...}, std::ios_base & __fl={...}, __rw::__rw_iostate & 
> __err=-858993460, tm * __tmb=0x00492518, char __fmt='x', char __modifier=0)  
> Line 175 + 0x2c bytes C++

[jira] Updated: (STDCXX-93) [MSVC 8.0] time_get crashes when calling get_date

2007-10-27 Thread Martin Sebor (JIRA)

 [ 
https://issues.apache.org/jira/browse/STDCXX-93?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Sebor updated STDCXX-93:
---

 Severity: Runtime Error
Affects Version/s: 4.1.2
   4.1.3
   4.1.4

> [MSVC 8.0] time_get crashes when calling get_date
> -
>
> Key: STDCXX-93
> URL: https://issues.apache.org/jira/browse/STDCXX-93
> Project: C++ Standard Library
>  Issue Type: Bug
>  Components: Examples
>Affects Versions: 4.1.2, 4.1.3, 4.1.4
> Environment: Visual C++ 8.0
>Reporter: Vikas Mehta
>Assignee: Martin Sebor
> Fix For: 4.2
>
>
> Test case:
> // Following code snippet is taken from examples\manual\time_get.cpp
> // NOTE: A SunPro bug requires time.h preceed locale. PR #26255
> #include   // for struct tm
> #include  // for locale, time_get
> #include // for stringstream
> #include// for cout, endl
> // Print out a tm struct value in one atomic operation
> std::ostream& operator<< (std::ostream &os, const std::tm &t)
> {
> std::stringstream strm;
> strm << "Daylight Savings = "   << t.tm_isdst
>  << "\nDay of year  = " << t.tm_yday
>  << "\nDay of week  = " << t.tm_wday
>  << "\nYear = " << t.tm_year
>  << "\nMonth= " << t.tm_mon
>  << "\nDay of month = " << t.tm_mday
>  << "\nHour = " << t.tm_hour
>  << "\nMinute   = " << t.tm_min
>  << "\nSecond   = " << t.tm_sec
>  << '\n';
> // guard for thread safety and output synchronization
> const std::ostream::sentry guard (os);
> if (guard)
> os.rdbuf ()->sputn (strm.str ().c_str (), strm.str ().size ());
> else
> os.setstate (os.failbit);
> return os;
> }
> int main ()
> {
> typedef std::istreambuf_iterator > Iter;
> // time struct to parse date into
> static std::tm timeb;  // zero initialized
> // Unused, required by time_get
> std::ios_base::iostate state;
> // Stream object to read from
> std::istringstream ins ("");
> // Iterators into the stream object
> Iter begin (ins);
> Iter end;
> // Get a reference to the time_get facet in locale loc.
> 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";
>   
> // Insert date string into stream.
> ins.str ("04/07/69");
> // get_date from the stream and output tm contents.
> tg.get_date (begin, end, ins, state, &timeb);
> std::cout << "Date: Apr 7 1969\n" << timeb << std::endl;
> return 0;
> }
> Stack Trace:
> > msvcr80d.dll!_mbstowcs_l_helper(wchar_t * pwcs=0x008e2b78, const char * 
> > s=0x008e6008, unsigned int n=1812, localeinfo_struct * plocinfo=0x0012f740) 
> >  Line 71C++
>   msvcr80d.dll!_mbstowcs_s_l(unsigned int * pConvertedChars=0x0012f7b0, 
> wchar_t * pwcs=0x008e2b78, unsigned int sizeInWords=1812, const char * 
> s=0x008e6008, unsigned int n=4294967295, localeinfo_struct * 
> plocinfo=0x0012f7d4)  Line 259 + 0x30 bytes   C++
>   msvcr80d.dll!_wcsftime_l_stat(wchar_t * wstring=0x008e2b78, unsigned 
> int maxsize=1812, const wchar_t * wformat=0x00473980, const tm * 
> timeptr=0x0012f858, localeinfo_struct * plocinfo=0x0012f7d4)  Line 101 + 0x32 
> bytes   C++
>   msvcr80d.dll!_wcsftime_l(wchar_t * wstring=0x008e2b78, unsigned int 
> maxsize=1812, const wchar_t * wformat=0x00473980, const tm * 
> timeptr=0x0012f858, localeinfo_struct * plocinfo=0x)  Line 152 + 0x1e 
> bytesC++
>   msvcr80d.dll!wcsftime(wchar_t * wstring=0x008e2b78, unsigned int 
> maxsize=1812, const wchar_t * wformat=0x00473980, const tm * 
> timeptr=0x0012f858)  Line 162 + 0x17 bytesC++
>   time_get.exe!__rw::__rw_get_timepunct(const __rw::__rw_facet * 
> pfacet=0x0049465c, int flags=64, unsigned int inx=0)  Line 695 + 0x28 bytes   
>C++
>   time_get.exe!__rw::__rw_get_timepunct(const __rw::__rw_facet * 
> pfacet=0x0049465c, int flags=64, const void * * names=0x0012fc40, unsigned 
> int * sizes=0x0012faa8)  Line 1115 + 0x11 bytes   C++
>   time_get.exe!__rw::__rw_get_timepunct(const __rw::__rw_facet * 
> pfacet=0x0049465c, int * data=0x0012fa4c, tm * tmb=0x0012fa78, int * * 
> pmem=0x0012fa6c, const void * * names=0x0012fc40, unsigned int * 
> sizes=0x0012faa8)  Line 1452 + 0x23 bytesC++
>   
> time_get.exe!std::time_get
>  > >::do_get(std::istreambuf_iterator > 
> __it={...}, std::istreambuf_iterator > 
> __end={...}, std::ios_base & __fl={...}, __rw::__rw_iostate & 
> __err=-858993460, tm * __tmb=0x00492518, char __fmt='x', char __modifier=0)  
> Line 175 + 0x2c bytes C++
>