]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datetime.cpp
More wxUSE_STATTEXT fixes
[wxWidgets.git] / src / common / datetime.cpp
index ec0c9c5ccf1c6649354124c0fa4d2feb6a1933ad..ba9419b5c786ad6969968a13c42e6561e3503a3d 100644 (file)
@@ -935,7 +935,7 @@ void wxDateTime::GetAmPmStrings(wxString *am, wxString *pm)
     // assert, even though it is a perfectly legal use.
     if ( am )
     {
-        if (wxStrftime(buffer, sizeof buffer, _T("%p"), &tm) > 0)
+        if (wxStrftime(buffer, sizeof(buffer)/sizeof(wxChar), _T("%p"), &tm) > 0)
             *am = wxString(buffer);
         else
             *am = wxString();
@@ -943,7 +943,7 @@ void wxDateTime::GetAmPmStrings(wxString *am, wxString *pm)
     if ( pm )
     {
         tm.tm_hour = 13;
-        if (wxStrftime(buffer, sizeof buffer, _T("%p"), &tm) > 0)
+        if (wxStrftime(buffer, sizeof(buffer)/sizeof(wxChar), _T("%p"), &tm) > 0)
             *pm = wxString(buffer);
         else
             *pm = wxString();
@@ -1291,18 +1291,21 @@ wxDateTime& wxDateTime::Set(wxDateTime_t hour,
 
     wxDATETIME_CHECK( tm, _T("localtime() failed") );
 
+    // make a copy so it isn't clobbered by the call to mktime() below
+    struct tm tm1(*tm);
+
     // adjust the time
-    tm->tm_hour = hour;
-    tm->tm_min = minute;
-    tm->tm_sec = second;
+    tm1.tm_hour = hour;
+    tm1.tm_min = minute;
+    tm1.tm_sec = second;
 
     // and the DST in case it changes on this date
-    struct tm tm2(*tm);
+    struct tm tm2(tm1);
     mktime(&tm2);
-    if ( tm2.tm_isdst != tm->tm_isdst )
-        tm->tm_isdst = tm2.tm_isdst;
+    if ( tm2.tm_isdst != tm1.tm_isdst )
+        tm1.tm_isdst = tm2.tm_isdst;
 
-    (void)Set(*tm);
+    (void)Set(tm1);
 
     // and finally adjust milliseconds
     return SetMillisecond(millisec);
@@ -2841,7 +2844,11 @@ void GetLocaleDateFormat(wxString *fmt)
         // done using wxLocale, in which case thread's current locale is also
         // set to correct LCID value and we can use GetLocaleInfo to determine
         // the correct formatting string:
+#ifdef __WXWINCE__
+        LCID lcid = LOCALE_USER_DEFAULT;
+#else
         LCID lcid = GetThreadLocale();
+#endif
         wxChar delim[5]; // fields deliminer, 4 chars max
         if ( GetLocaleInfo(lcid, LOCALE_SDATE, delim, 5) )
         {