From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/JavaScriptCore/yarr/RegularExpression.cpp | 25 ++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'Source/JavaScriptCore/yarr/RegularExpression.cpp') diff --git a/Source/JavaScriptCore/yarr/RegularExpression.cpp b/Source/JavaScriptCore/yarr/RegularExpression.cpp index b58ad393c..d87d6031f 100644 --- a/Source/JavaScriptCore/yarr/RegularExpression.cpp +++ b/Source/JavaScriptCore/yarr/RegularExpression.cpp @@ -12,10 +12,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -29,6 +29,7 @@ #include "RegularExpression.h" #include "Yarr.h" +#include "YarrInterpreter.h" #include #include @@ -36,15 +37,15 @@ namespace JSC { namespace Yarr { class RegularExpression::Private : public RefCounted { public: - static PassRefPtr create(const String& pattern, TextCaseSensitivity caseSensitivity, MultilineMode multilineMode) + static Ref create(const String& pattern, TextCaseSensitivity caseSensitivity, MultilineMode multilineMode) { - return adoptRef(new Private(pattern, caseSensitivity, multilineMode)); + return adoptRef(*new Private(pattern, caseSensitivity, multilineMode)); } int lastMatchLength; unsigned m_numSubpatterns; - OwnPtr m_regExpByteCode; + std::unique_ptr m_regExpByteCode; private: Private(const String& pattern, TextCaseSensitivity caseSensitivity, MultilineMode multilineMode) @@ -54,9 +55,17 @@ private: { } - PassOwnPtr compile(const String& patternString, TextCaseSensitivity caseSensitivity, MultilineMode multilineMode) + std::unique_ptr compile(const String& patternString, TextCaseSensitivity caseSensitivity, MultilineMode multilineMode) { - JSC::Yarr::YarrPattern pattern(patternString, (caseSensitivity == TextCaseInsensitive), (multilineMode == MultilineEnabled), &m_constructionError); + RegExpFlags flags = NoFlags; + + if (caseSensitivity == TextCaseInsensitive) + flags = static_cast(flags | FlagIgnoreCase); + + if (multilineMode == MultilineEnabled) + flags = static_cast(flags | FlagMultiline); + + JSC::Yarr::YarrPattern pattern(patternString, flags, &m_constructionError); if (m_constructionError) { LOG_ERROR("RegularExpression: YARR compile failed with '%s'", m_constructionError); return nullptr; @@ -178,7 +187,7 @@ void replace(String& string, const RegularExpression& target, const String& repl bool RegularExpression::isValid() const { - return d->m_regExpByteCode; + return d->m_regExpByteCode.get(); } } } // namespace JSC::Yarr -- cgit v1.2.1