From 0cadcc4945e0397ce427e2ce27353c0786fe477b Mon Sep 17 00:00:00 2001 From: Max Khon Date: Sun, 9 Nov 2003 19:23:40 +0000 Subject: Update to 2.4.2. --- .../wxgtk24/files/patch-src-common-datetime.cpp | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 x11-toolkits/wxgtk24/files/patch-src-common-datetime.cpp (limited to 'x11-toolkits/wxgtk24/files/patch-src-common-datetime.cpp') diff --git a/x11-toolkits/wxgtk24/files/patch-src-common-datetime.cpp b/x11-toolkits/wxgtk24/files/patch-src-common-datetime.cpp new file mode 100644 index 000000000000..f4931273f720 --- /dev/null +++ b/x11-toolkits/wxgtk24/files/patch-src-common-datetime.cpp @@ -0,0 +1,56 @@ +--- src/common/datetime.cpp.orig Tue Nov 4 09:50:09 2003 ++++ src/common/datetime.cpp Tue Nov 4 09:52:02 2003 +@@ -349,6 +349,35 @@ + return wxString(buf); + } + ++#ifdef HAVE_STRPTIME ++ ++// Unicode-friendly strptime() wrapper ++static const wxChar * ++CallStrptime(const wxChar *input, const char *fmt, tm *tm) ++{ ++ // the problem here is that strptime() returns pointer into the string we ++ // passed to it while we're really interested in the pointer into the ++ // original, Unicode, string so we try to transform the pointer back ++#if wxUSE_UNICODE ++ wxCharBuffer inputMB(wxConvertWX2MB(input)); ++#else // ASCII ++ const char * const inputMB = input; ++#endif // Unicode/Ascii ++ ++ const char *result = strptime(inputMB, fmt, tm); ++ if ( !result ) ++ return NULL; ++ ++#if wxUSE_UNICODE ++ // FIXME: this is wrong in presence of surrogates &c ++ return input + (result - inputMB.data()); ++#else // ASCII ++ return result; ++#endif // Unicode/Ascii ++} ++ ++#endif // HAVE_STRPTIME ++ + // if year and/or month have invalid values, replace them with the current ones + static void ReplaceDefaultYearMonthWithCurrent(int *year, + wxDateTime::Month *month) +@@ -2920,7 +2949,7 @@ + // to our generic code anyhow (FIXME !Unicode friendly) + { + struct tm tm; +- const wxChar *result = strptime(input, "%x", &tm); ++ const wxChar *result = CallStrptime(input, "%x", &tm); + if ( result ) + { + input = result; +@@ -2985,7 +3014,7 @@ + { + // use strptime() to do it for us (FIXME !Unicode friendly) + struct tm tm; +- input = strptime(input, "%X", &tm); ++ input = CallStrptime(input, "%X", &tm); + if ( !input ) + { + return (wxChar *)NULL; -- cgit v1.2.3