X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14f355c2b5c71fc7c3d680aea366582d2ac60f7b..57ba8fb85809cf56dc3a8b18428488a6a21276b6:/src/common/regex.cpp diff --git a/src/common/regex.cpp b/src/common/regex.cpp index 9c7e55c040..7f23266dd5 100644 --- a/src/common/regex.cpp +++ b/src/common/regex.cpp @@ -49,6 +49,11 @@ #include "wx/regex.h" +#ifdef wxUSE_NEW_REGEX + #define regerror wx_regerror + #define regfree wx_regfree +#endif + // ---------------------------------------------------------------------------- // private classes // ---------------------------------------------------------------------------- @@ -148,7 +153,9 @@ wxString wxRegExImpl::GetErrorMsg(int errorcode) const msg = wxString(buf.data(), wxConvLibc); #else // !Unicode - (void)regerror(errorcode, &m_RegEx, wxStringBuffer(msg, len), len); + (void)regerror(errorcode, &m_RegEx, msg.GetWriteBuf(len), len); + + msg.UngetWriteBuf(); #endif // Unicode/!Unicode } else // regerror() returned 0 @@ -178,9 +185,15 @@ bool wxRegExImpl::Compile(const wxString& expr, int flags) if ( flags & wxRE_NEWLINE ) flagsRE |= REG_NEWLINE; + // compile it +#if wxUSE_NEW_REGEX + int errorcode = wx_regcomp(&m_RegEx, expr, expr.Length(), flagsRE); +#else int errorcode = regcomp(&m_RegEx, expr.mb_str(), flagsRE); - if ( errorcode ) +#endif + + if ( errorcode ) { wxLogError(_("Invalid regular expression '%s': %s"), expr.c_str(), GetErrorMsg(errorcode).c_str()); @@ -253,7 +266,12 @@ bool wxRegExImpl::Matches(const wxChar *str, int flags) const } // do match it +#ifdef wxUSE_NEW_REGEX + rm_detail_t rd; + int rc = wx_regexec(&self->m_RegEx, str, wxStrlen(str), &rd, m_nMatches, m_Matches, flagsRE); +#else int rc = regexec(&self->m_RegEx, wxConvertWX2MB(str), m_nMatches, m_Matches, flagsRE); +#endif switch ( rc ) {