X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/52de37c78f31bc03f8b96090932c7ce8c3907d29..39c20230ba7ca49fbdfd7c558b4669ddc15ba4aa:/src/common/regex.cpp

diff --git a/src/common/regex.cpp b/src/common/regex.cpp
index ccf9ffd727..58c50f399d 100644
--- a/src/common/regex.cpp
+++ b/src/common/regex.cpp
@@ -32,6 +32,7 @@
     #include "wx/string.h"
     #include "wx/log.h"
     #include "wx/intl.h"
+    #include "wx/crt.h"
 #endif //WX_PRECOMP
 
 // FreeBSD, Watcom and DMars require this, CW doesn't have nor need it.
@@ -57,9 +58,9 @@
 #   define WXREGEX_USING_BUILTIN
 #   define WXREGEX_IF_NEED_LEN(x) ,x
 #   if wxUSE_UNICODE
-#       define WXREGEX_CHAR(x) x.wc_str()
+#       define WXREGEX_CHAR(x) (x).wc_str()
 #   else
-#       define WXREGEX_CHAR(x) x.mb_str()
+#       define WXREGEX_CHAR(x) (x).mb_str()
 #   endif
 #else
 #   ifdef HAVE_RE_SEARCH
@@ -71,7 +72,7 @@
 #   if wxUSE_UNICODE
 #       define WXREGEX_CONVERT_TO_MB
 #   endif
-#   define WXREGEX_CHAR(x) x.mb_str()
+#   define WXREGEX_CHAR(x) (x).mb_str()
 #   define wx_regfree regfree
 #   define wx_regerror regerror
 #endif
@@ -512,7 +513,11 @@ int wxRegExImpl::Replace(wxString *text,
     // note that "^" shouldn't match after the first call to Matches() so we
     // use wxRE_NOTBOL to prevent it from happening
     while ( (!maxMatches || countRepl < maxMatches) &&
+#ifndef WXREGEX_CONVERT_TO_MB
             Matches(textstr + matchStart,
+#else
+            Matches(textstr.data() + matchStart,
+#endif 
                     countRepl ? wxRE_NOTBOL : 0
                     WXREGEX_IF_NEED_LEN(textlen - matchStart)) )
     {
@@ -558,7 +563,12 @@ int wxRegExImpl::Replace(wxString *text,
                     }
                     else
                     {
+#ifndef WXREGEX_CONVERT_TO_MB
                         textNew += wxString(textstr + matchStart + start,
+#else
+                        textNew += wxString(textstr.data() + matchStart +
+					    start,
+#endif
                                             *wxConvCurrent, len);
 
                         mayHaveBackrefs = true;
@@ -588,7 +598,8 @@ int wxRegExImpl::Replace(wxString *text,
 #ifndef WXREGEX_CONVERT_TO_MB
         result.append(*text, matchStart, start);
 #else
-        result.append(wxString(textstr + matchStart, *wxConvCurrent, start));
+        result.append(wxString(textstr.data() + matchStart, *wxConvCurrent, 
+			       start));
 #endif
         matchStart += start;
         result.append(textNew);
@@ -601,7 +612,7 @@ int wxRegExImpl::Replace(wxString *text,
 #ifndef WXREGEX_CONVERT_TO_MB
     result.append(*text, matchStart, wxString::npos);
 #else
-    result.append(wxString(textstr + matchStart, *wxConvCurrent));
+    result.append(wxString(textstr.data() + matchStart, *wxConvCurrent));
 #endif
     *text = result;