]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/regex.cpp
fix for BSD compilation
[wxWidgets.git] / src / common / regex.cpp
index 45efe1a5b2eab297ca1808e7da5835512fec42ae..1d5a9f6323481726cbee6b8ade87a7cf0555e38f 100644 (file)
@@ -127,9 +127,17 @@ wxString wxRegExImpl::GetErrorMsg(int errorcode) const
     {
         len++;
 
     {
         len++;
 
+#if wxUSE_UNICODE
+        wxCharBuffer buf(len);
+
+        (void)regerror(errorcode, &m_RegEx, (char *)buf.data(), len);
+
+        msg = buf.data();
+#else // !Unicode
         (void)regerror(errorcode, &m_RegEx, msg.GetWriteBuf(len), len);
 
         msg.UngetWriteBuf();
         (void)regerror(errorcode, &m_RegEx, msg.GetWriteBuf(len), len);
 
         msg.UngetWriteBuf();
+#endif // Unicode/!Unicode
     }
     else // regerror() returned 0
     {
     }
     else // regerror() returned 0
     {
@@ -159,7 +167,7 @@ bool wxRegExImpl::Compile(const wxString& expr, int flags)
         flagsRE |= REG_NEWLINE;
 
     // compile it
         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"),
     if ( errorcode )
     {
         wxLogError(_("Invalid regular expression '%s': %s"),
@@ -230,7 +238,7 @@ bool wxRegExImpl::Matches(const wxChar *str, int flags) const
     }
 
     // do match it
     }
 
     // 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 )
     {
 
     switch ( rc )
     {