]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/regex.cpp
fix Alt-letter navigation with spin controls (bug 672974)
[wxWidgets.git] / src / common / regex.cpp
index 45efe1a5b2eab297ca1808e7da5835512fec42ae..cbaa57991dc9acfad1fdb91d09a2936e13bf5b53 100644 (file)
@@ -38,8 +38,8 @@
     #include "wx/intl.h"
 #endif //WX_PRECOMP
 
-// FreeBSD requires this, it probably doesn't hurt for others
-#ifdef __UNIX__
+// FreeBSD & Watcom require this, it probably doesn't hurt for others
+#if defined(__UNIX__) || defined(__WATCOMC__)
     #include <sys/types.h>
 #endif
 
@@ -127,9 +127,17 @@ wxString wxRegExImpl::GetErrorMsg(int errorcode) const
     {
         len++;
 
+#if wxUSE_UNICODE
+        wxCharBuffer buf(len);
+
+        (void)regerror(errorcode, &m_RegEx, (char *)buf.data(), len);
+
+        msg = wxString(buf.data(), wxConvLibc);
+#else // !Unicode
         (void)regerror(errorcode, &m_RegEx, msg.GetWriteBuf(len), len);
 
         msg.UngetWriteBuf();
+#endif // Unicode/!Unicode
     }
     else // regerror() returned 0
     {
@@ -159,7 +167,7 @@ bool wxRegExImpl::Compile(const wxString& expr, int flags)
         flagsRE |= REG_NEWLINE;
 
     // compile it
-    int errorcode = regcomp(&m_RegEx, expr, flagsRE);
+    int errorcode = regcomp(&m_RegEx, expr.mb_str(), flagsRE);
     if ( errorcode )
     {
         wxLogError(_("Invalid regular expression '%s': %s"),
@@ -230,7 +238,7 @@ bool wxRegExImpl::Matches(const wxChar *str, int flags) const
     }
 
     // do match it
-    int rc = regexec(&self->m_RegEx, str, m_nMatches, m_Matches, flagsRE);
+    int rc = regexec(&self->m_RegEx, wxConvertWX2MB(str), m_nMatches, m_Matches, flagsRE);
 
     switch ( rc )
     {