]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed broken wxCtime() implementation (wrong buffer size count, wrong conversion)
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Mar 2005 23:45:45 +0000 (23:45 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Mar 2005 23:45:45 +0000 (23:45 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/wxchar.cpp

index 5af0fe3c94d66583ad79ebdf3c90c5aa66ead8a0..0f8b05a3e464cf2a01c47b71b26c1f2fe5c965de 100644 (file)
@@ -1520,10 +1520,14 @@ wxStrftime(wxChar *s, size_t maxsize, const wxChar *fmt, const struct tm *tm)
 #ifndef wxCtime
 WXDLLEXPORT wxChar *wxCtime(const time_t *timep)
 {
-    static wxChar   buf[128];
-
-    wxStrncpy( buf, wxConvertMB2WX( ctime( timep ) ), sizeof( buf ) );
-    buf[ sizeof( buf ) - 1 ] = _T('\0');
+    // normally the string is 26 chars but give one more in case some broken
+    // DOS compiler decides to use "\r\n" instead of "\n" at the end
+    static wxChar buf[27];
+
+    // ctime() is guaranteed to return a string containing only ASCII
+    // characters, as its format is always the same for any locale
+    wxStrncpy(buf, wxString::FromAscii(ctime(timep)), WXSIZEOF(buf));
+    buf[WXSIZEOF(buf) - 1] = _T('\0');
 
     return buf;
 }