mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
+ upd: Oniguruma RegExp Engine v7.0.0
This commit is contained in:
parent
b1c0a4a12d
commit
6972df63df
@ -173,7 +173,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;USE_POSIX_API;USE_BINARY_COMPATIBLE_POSIX_API;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SmallerTypeCheck>false</SmallerTypeCheck>
|
||||
@ -202,7 +202,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;USE_POSIX_API;USE_BINARY_COMPATIBLE_POSIX_API;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;_WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<SmallerTypeCheck>false</SmallerTypeCheck>
|
||||
@ -231,7 +231,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;USE_POSIX_API;USE_BINARY_COMPATIBLE_POSIX_API;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
@ -265,7 +265,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;USE_POSIX_API;USE_BINARY_COMPATIBLE_POSIX_API;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
@ -294,7 +294,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;USE_POSIX_API;USE_BINARY_COMPATIBLE_POSIX_API;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
@ -328,7 +328,7 @@
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;USE_POSIX_API;USE_BINARY_COMPATIBLE_POSIX_API;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_WIN32_WINNT=0x601;WINVER=0x601;NTDDI_VERSION=0x06010000;_SCL_SECURE_NO_WARNINGS;NP3;NO_CXX11_REGEX;SCI_OWNREGEX;SCI_EMPTYCATALOGUE;ONIG_STATIC;SCI_LEXER;_WIN64;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES;STATIC_BUILD;USE_D2D;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
@ -361,8 +361,6 @@
|
||||
<ClCompile Include="oniguruma\src\regext.c" />
|
||||
<ClCompile Include="oniguruma\src\reggnu.c" />
|
||||
<ClCompile Include="oniguruma\src\regparse.c" />
|
||||
<ClCompile Include="oniguruma\src\regposerr.c" />
|
||||
<ClCompile Include="oniguruma\src\regposix.c" />
|
||||
<ClCompile Include="oniguruma\src\regsyntax.c" />
|
||||
<ClCompile Include="oniguruma\src\regtrav.c" />
|
||||
<ClCompile Include="oniguruma\src\regversion.c" />
|
||||
@ -412,7 +410,6 @@
|
||||
<ItemGroup>
|
||||
<ClInclude Include="oniguruma\src\config.h" />
|
||||
<ClInclude Include="oniguruma\src\oniggnu.h" />
|
||||
<ClInclude Include="oniguruma\src\onigposix.h" />
|
||||
<ClInclude Include="oniguruma\src\oniguruma.h" />
|
||||
<ClInclude Include="oniguruma\src\regenc.h" />
|
||||
<ClInclude Include="oniguruma\src\regint.h" />
|
||||
|
||||
@ -183,12 +183,6 @@
|
||||
<ClCompile Include="src\CharacterSet.cxx">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="oniguruma\src\regposerr.c">
|
||||
<Filter>oniguruma\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="oniguruma\src\regposix.c">
|
||||
<Filter>oniguruma\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Geometry.cxx">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
@ -344,9 +338,6 @@
|
||||
<ClInclude Include="oniguruma\src\st.h">
|
||||
<Filter>oniguruma\src</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="oniguruma\src\onigposix.h">
|
||||
<Filter>oniguruma\src</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\CharacterCategory.h">
|
||||
<Filter>src</Filter>
|
||||
</ClInclude>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
Oniguruma API Version 6.9.7 2021/03/03
|
||||
Oniguruma API Version 7.0.0 2021/04/26
|
||||
|
||||
#include <oniguruma.h>
|
||||
|
||||
@ -20,7 +20,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
error: error code < 0
|
||||
|
||||
|
||||
# int onig_error_code_to_str(UChar* err_buf, int err_code, ...)
|
||||
# int onig_error_code_to_str(UChar* err_buf, OnigPos err_code, ...)
|
||||
|
||||
Get error message string.
|
||||
If this function is used for onig_new(),
|
||||
@ -322,8 +322,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
|
||||
|
||||
|
||||
# int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start,
|
||||
const UChar* range, OnigRegion* region, OnigOptionType option)
|
||||
# OnigPos onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option)
|
||||
|
||||
Search string and return search result and matching region.
|
||||
Do not pass invalid byte string in the regex character encoding.
|
||||
@ -367,9 +366,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
will be shared with callout.
|
||||
|
||||
|
||||
# int onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range, OnigRegion* region,
|
||||
OnigOptionType option, OnigMatchParam* mp)
|
||||
# OnigPos onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp)
|
||||
|
||||
Search string and return search result and matching region.
|
||||
Do not pass invalid byte string in the regex character encoding.
|
||||
@ -379,8 +376,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
8 mp: match parameter values (match_stack_limit, retry_limit_in_match, retry_limit_in_search)
|
||||
|
||||
|
||||
# int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
|
||||
OnigRegion* region, OnigOptionType option)
|
||||
# OnigPos onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, OnigOptionType option)
|
||||
|
||||
Match string and return result and matching region.
|
||||
Do not pass invalid byte string in the regex character encoding.
|
||||
@ -409,9 +405,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
ONIG_OPTION_CALLBACK_EACH_MATCH Call back for all successful matches.
|
||||
|
||||
|
||||
# int onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* at, OnigRegion* region,
|
||||
OnigOptionType option, OnigMatchParam* mp)
|
||||
# OnigPos onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp)
|
||||
|
||||
Match string and return result and matching region.
|
||||
Do not pass invalid byte string in the regex character encoding.
|
||||
@ -423,7 +417,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
|
||||
# int onig_scan(regex_t* reg, const UChar* str, const UChar* end,
|
||||
OnigRegion* region, OnigOptionType option,
|
||||
int (*scan_callback)(int, int, OnigRegion*, void*),
|
||||
int (*scan_callback)(int, OnigPos, OnigRegion*, void*),
|
||||
void* callback_arg)
|
||||
|
||||
Scan string and callback with matching region.
|
||||
@ -525,7 +519,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
2 at: index of regex array (zero origin)
|
||||
|
||||
|
||||
# int onig_regset_search(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos)
|
||||
# int onig_regset_search(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigPos* rmatch_pos)
|
||||
|
||||
Perform a search with regset.
|
||||
|
||||
@ -558,7 +552,7 @@ Oniguruma API Version 6.9.7 2021/03/03
|
||||
In most cases, ONIG_REGSET_POSITION_LEAD seems to be faster.
|
||||
|
||||
|
||||
# int onig_regset_search_with_param(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos)
|
||||
# int onig_regset_search_with_param(OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], OnigPos* rmatch_pos)
|
||||
|
||||
Perform a search with regset and match-params.
|
||||
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
#ifdef ONIG_ESCAPE_UCHAR_COLLISION
|
||||
#undef ONIG_ESCAPE_UCHAR_COLLISION
|
||||
#endif
|
||||
#include "../oniguruma/src/oniguruma.h" // Oniguruma - Regular Expression Engine (v6.9.2)
|
||||
#include "../oniguruma/src/oniguruma.h" // Oniguruma - Regular Expression Engine
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
#define UCharPtr(pchar) reinterpret_cast<OnigUChar*>(pchar)
|
||||
@ -76,10 +76,11 @@ static void SetSimpleOptions(OnigOptionType& onigOptions, EOLmode /*eolMode*/,
|
||||
onigOptions = ONIG_OPTION_DEFAULT;
|
||||
|
||||
// Notepad3 forced options
|
||||
ONIG_OPTION_ON(onigOptions, ONIG_OPTION_NEGATE_SINGLELINE);
|
||||
|
||||
ONIG_OPTION_OFF(onigOptions, ONIG_OPTION_POSIX_REGION);
|
||||
ONIG_OPTION_OFF(onigOptions, ONIG_OPTION_EXTEND);
|
||||
ONIG_OPTION_OFF(onigOptions, ONIG_OPTION_SINGLELINE);
|
||||
ONIG_OPTION_ON(onigOptions, ONIG_OPTION_NEGATE_SINGLELINE);
|
||||
ONIG_OPTION_OFF(onigOptions, ONIG_OPTION_FIND_LONGEST);
|
||||
|
||||
//ONIG_OPTION_OFF(onigOptions, ONIG_OPTION_ASCII_RANGE);
|
||||
@ -137,6 +138,7 @@ public:
|
||||
{
|
||||
m_OnigSyntax.op |= ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END; // xcluded from ONIG_SYNTAX_DEFAULT ?
|
||||
onig_initialize(s_UsedEncodingsTypes, _ARRAYSIZE(s_UsedEncodingsTypes));
|
||||
///onig_set_default_syntax(ONIG_SYNTAX_ONIGURUMA); // std is: ONIG_SYNTAX_ONIGURUMA
|
||||
onig_region_init(&m_Region);
|
||||
}
|
||||
|
||||
@ -322,7 +324,7 @@ Sci::Position OnigurumaRegExEngine::FindText(Document* doc, Sci::Position minPos
|
||||
auto const rangeBegPtr = UCharCPtr(doc->RangePointer(rangeBeg, rangeLen));
|
||||
auto const rangeEndPtr = UCharCPtr(doc->RangePointer(rangeEnd, 0));
|
||||
|
||||
OnigPosition result = ONIG_MISMATCH;
|
||||
OnigPos result = ONIG_MISMATCH;
|
||||
try {
|
||||
onig_region_free(&m_Region, 0); /* 1:free self, 0:free contents only */
|
||||
onig_region_init(&m_Region);
|
||||
@ -693,11 +695,11 @@ public:
|
||||
onig_end();
|
||||
}
|
||||
|
||||
OnigPosition Find(const OnigUChar *pattern, const OnigUChar *document, const bool caseSensitive, int *matchLen_out = nullptr);
|
||||
OnigPos Find(const OnigUChar *pattern, const OnigUChar *document, const bool caseSensitive, int *matchLen_out = nullptr);
|
||||
|
||||
const OnigPosition GetMatchPos() const { return m_MatchPos; };
|
||||
const OnigPosition GetMatchLen() const { return m_MatchLen; };
|
||||
const OnigRegion& GetRegion() const { return m_Region; };
|
||||
constexpr OnigPos GetMatchPos() const { return m_MatchPos; };
|
||||
constexpr OnigPos GetMatchLen() const { return m_MatchLen; };
|
||||
const OnigRegion & GetRegion() const { return m_Region; };
|
||||
|
||||
private:
|
||||
|
||||
@ -713,23 +715,23 @@ private:
|
||||
|
||||
OnigUChar m_ErrorInfo[ONIG_MAX_ERROR_MESSAGE_LEN];
|
||||
|
||||
OnigPosition m_MatchPos;
|
||||
OnigPosition m_MatchLen;
|
||||
OnigPos m_MatchPos;
|
||||
OnigPos m_MatchLen;
|
||||
|
||||
};
|
||||
// ============================================================================
|
||||
|
||||
|
||||
OnigPosition SimpleRegExEngine::Find(const OnigUChar* pattern, const OnigUChar* document, const bool caseSensitive, int* matchLen_out /*=nullptr*/)
|
||||
OnigPos SimpleRegExEngine::Find(const OnigUChar* pattern, const OnigUChar* document, const bool caseSensitive, int* matchLen_out /*=nullptr*/)
|
||||
{
|
||||
auto const patternLen = (pattern) ? OnigPosition(_mbslen(pattern)) : 0;
|
||||
auto const patternLen = (pattern) ? OnigPos(_mbslen(pattern)) : 0;
|
||||
if (patternLen == 0) {
|
||||
return OnigPosition(-1);
|
||||
return OnigPos(-1);
|
||||
}
|
||||
|
||||
auto const stringLen = (document) ? OnigPosition(_mbslen(document)) : 0;
|
||||
auto const stringLen = (document) ? OnigPos(_mbslen(document)) : 0;
|
||||
if (stringLen == 0) {
|
||||
return OnigPosition(-1);
|
||||
return OnigPos(-1);
|
||||
}
|
||||
|
||||
// init search options
|
||||
@ -748,7 +750,7 @@ OnigPosition SimpleRegExEngine::Find(const OnigUChar* pattern, const OnigUChar*
|
||||
|
||||
if (res != ONIG_NORMAL) {
|
||||
//onig_error_code_to_str(m_ErrorInfo, res, &einfo);
|
||||
return OnigPosition(-111);
|
||||
return OnigPos(-111);
|
||||
}
|
||||
|
||||
onig_region_free(&m_Region, 0);
|
||||
@ -760,16 +762,16 @@ OnigPosition SimpleRegExEngine::Find(const OnigUChar* pattern, const OnigUChar*
|
||||
const UChar* rangeEnd = strgEnd;
|
||||
|
||||
// start search
|
||||
OnigPosition result = onig_search(m_RegExpr, strgBeg, strgEnd,
|
||||
OnigPos result = onig_search(m_RegExpr, strgBeg, strgEnd,
|
||||
rangeBeg, rangeEnd, &m_Region, m_Options);
|
||||
|
||||
if (result < ONIG_MISMATCH) {
|
||||
//onig_error_code_to_str(m_ErrorInfo, result);
|
||||
return OnigPosition(-3);
|
||||
return OnigPos(-3);
|
||||
}
|
||||
|
||||
m_MatchPos = OnigPosition(ONIG_MISMATCH); // not found
|
||||
m_MatchLen = OnigPosition(0);
|
||||
m_MatchPos = OnigPos(ONIG_MISMATCH); // not found
|
||||
m_MatchLen = OnigPos(0);
|
||||
|
||||
if (result >= 0) // found
|
||||
{
|
||||
@ -787,12 +789,12 @@ OnigPosition SimpleRegExEngine::Find(const OnigUChar* pattern, const OnigUChar*
|
||||
{
|
||||
//onig_error_code_to_str(m_ErrorInfo, result);
|
||||
m_MatchPos = result;
|
||||
m_MatchLen = OnigPosition(0);
|
||||
m_MatchLen = OnigPos(0);
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
// -1 is normally used for not found, -666 is used here for exception
|
||||
return OnigPosition(-666);
|
||||
return OnigPos(-666);
|
||||
}
|
||||
|
||||
if (matchLen_out) {
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
onigposix.h - Oniguruma (regular expression library)
|
||||
**********************************************************************/
|
||||
/*-
|
||||
* Copyright (c) 2002-2020 K.Kosako
|
||||
* Copyright (c) 2002-2021 K.Kosako
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -74,7 +74,7 @@ extern "C" {
|
||||
#define REG_POSIX_ENCODING_UTF16_LE 5
|
||||
|
||||
|
||||
typedef int onig_posix_regoff_t;
|
||||
typedef ptrdiff_t onig_posix_regoff_t;
|
||||
|
||||
typedef struct {
|
||||
onig_posix_regoff_t rm_so;
|
||||
|
||||
@ -34,11 +34,11 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#define ONIGURUMA
|
||||
#define ONIGURUMA_VERSION_MAJOR 6
|
||||
#define ONIGURUMA_VERSION_MINOR 9
|
||||
#define ONIGURUMA_VERSION_TEENY 7
|
||||
#define ONIGURUMA_VERSION_MAJOR 7
|
||||
#define ONIGURUMA_VERSION_MINOR 0
|
||||
#define ONIGURUMA_VERSION_TEENY 0
|
||||
|
||||
#define ONIGURUMA_VERSION_INT 60907
|
||||
#define ONIGURUMA_VERSION_INT 70000
|
||||
|
||||
#ifndef P_
|
||||
#if defined(__STDC__) || defined(_WIN32)
|
||||
@ -80,13 +80,17 @@ extern "C" {
|
||||
#define UChar OnigUChar
|
||||
#endif
|
||||
|
||||
typedef int OnigPosition; // extent
|
||||
|
||||
typedef unsigned int OnigCodePoint;
|
||||
typedef unsigned char OnigUChar;
|
||||
typedef unsigned int OnigCtype;
|
||||
typedef unsigned int OnigLen;
|
||||
|
||||
#ifndef ONIG_NO_STANDARD_C_HEADERS
|
||||
#include <stddef.h> /* for ptrdiff_t */
|
||||
#endif
|
||||
|
||||
typedef ptrdiff_t OnigPos;
|
||||
|
||||
#define ONIG_INFINITE_DISTANCE ~((OnigLen )0)
|
||||
|
||||
typedef unsigned int OnigCaseFoldType; /* case fold flag */
|
||||
@ -671,8 +675,8 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
|
||||
|
||||
typedef struct OnigCaptureTreeNodeStruct {
|
||||
int group; /* group number */
|
||||
int beg;
|
||||
int end;
|
||||
OnigPos beg;
|
||||
OnigPos end;
|
||||
int allocated;
|
||||
int num_childs;
|
||||
struct OnigCaptureTreeNodeStruct** childs;
|
||||
@ -682,8 +686,8 @@ typedef struct OnigCaptureTreeNodeStruct {
|
||||
struct re_registers {
|
||||
int allocated;
|
||||
int num_regs;
|
||||
int* beg;
|
||||
int* end;
|
||||
OnigPos* beg;
|
||||
OnigPos* end;
|
||||
/* extended */
|
||||
OnigCaptureTreeNode* history_root; /* capture history tree root */
|
||||
};
|
||||
@ -816,9 +820,9 @@ int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings));
|
||||
ONIG_EXTERN
|
||||
int onig_init P_((void));
|
||||
ONIG_EXTERN
|
||||
int ONIG_VARIADIC_FUNC_ATTR onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...));
|
||||
int ONIG_VARIADIC_FUNC_ATTR onig_error_code_to_str PV_((OnigUChar* s, OnigPos err_code, ...));
|
||||
ONIG_EXTERN
|
||||
int onig_is_error_code_needs_param PV_((int code));
|
||||
int onig_is_error_code_needs_param PV_((OnigPos code));
|
||||
ONIG_EXTERN
|
||||
void onig_set_warn_func P_((OnigWarnFunc f));
|
||||
ONIG_EXTERN
|
||||
@ -835,15 +839,15 @@ void onig_free P_((OnigRegex));
|
||||
ONIG_EXTERN
|
||||
void onig_free_body P_((OnigRegex));
|
||||
ONIG_EXTERN
|
||||
int onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg);
|
||||
int onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, OnigPos, OnigRegion*, void*), void* callback_arg);
|
||||
ONIG_EXTERN
|
||||
int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
|
||||
OnigPos onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
|
||||
ONIG_EXTERN
|
||||
int onig_search_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
|
||||
OnigPos onig_search_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
|
||||
ONIG_EXTERN
|
||||
int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
|
||||
OnigPos onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
|
||||
ONIG_EXTERN
|
||||
int onig_match_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
|
||||
OnigPos onig_match_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
|
||||
|
||||
ONIG_EXTERN
|
||||
int onig_regset_new P_((OnigRegSet** rset, int n, regex_t* regs[]));
|
||||
@ -860,9 +864,9 @@ regex_t* onig_regset_get_regex P_((OnigRegSet* set, int at));
|
||||
ONIG_EXTERN
|
||||
OnigRegion* onig_regset_get_region P_((OnigRegSet* set, int at));
|
||||
ONIG_EXTERN
|
||||
int onig_regset_search P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos));
|
||||
int onig_regset_search P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigPos* rmatch_pos));
|
||||
ONIG_EXTERN
|
||||
int onig_regset_search_with_param P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos));
|
||||
int onig_regset_search_with_param P_((OnigRegSet* set, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[], OnigPos* rmatch_pos));
|
||||
|
||||
ONIG_EXTERN
|
||||
OnigRegion* onig_region_new P_((void));
|
||||
|
||||
@ -6922,7 +6922,7 @@ set_optimize_exact(regex_t* reg, OptStr* e)
|
||||
}
|
||||
|
||||
reg->dist_min = e->mm.min;
|
||||
reg->dist_max = e->mm.max;
|
||||
reg->dist_max = (OnigSize )e->mm.max;
|
||||
|
||||
if (reg->dist_min != INFINITE_LEN) {
|
||||
int n = (int )(reg->exact_end - reg->exact);
|
||||
@ -6942,7 +6942,7 @@ set_optimize_map(regex_t* reg, OptMap* m)
|
||||
|
||||
reg->optimize = OPTIMIZE_MAP;
|
||||
reg->dist_min = m->mm.min;
|
||||
reg->dist_max = m->mm.max;
|
||||
reg->dist_max = (OnigSize )m->mm.max;
|
||||
|
||||
if (reg->dist_min != INFINITE_LEN) {
|
||||
reg->threshold_len = reg->dist_min + ONIGENC_MBC_MINLEN(reg->enc);
|
||||
@ -7011,6 +7011,9 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ParseEnv* scan_env)
|
||||
reg->sub_anchor |= opt.anc.right & ANCR_END_LINE;
|
||||
}
|
||||
|
||||
if (reg->dist_max == INFINITE_LEN)
|
||||
reg->dist_max = INFINITE_SIZE;
|
||||
|
||||
#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)
|
||||
print_optimize_info(DBGFP, reg);
|
||||
#endif
|
||||
@ -7191,10 +7194,10 @@ print_optimize_info(FILE* f, regex_t* reg)
|
||||
}
|
||||
fprintf(f, "]: length: %ld, dmin: %u, ",
|
||||
(reg->exact_end - reg->exact), reg->dist_min);
|
||||
if (reg->dist_max == INFINITE_LEN)
|
||||
if (reg->dist_max == INFINITE_SIZE)
|
||||
fprintf(f, "dmax: inf.\n");
|
||||
else
|
||||
fprintf(f, "dmax: %u\n", reg->dist_max);
|
||||
fprintf(f, "dmax: %lu\n", reg->dist_max);
|
||||
}
|
||||
else if (reg->optimize & OPTIMIZE_MAP) {
|
||||
int c, i, n = 0;
|
||||
@ -7202,8 +7205,8 @@ print_optimize_info(FILE* f, regex_t* reg)
|
||||
for (i = 0; i < CHAR_MAP_SIZE; i++)
|
||||
if (reg->map[i]) n++;
|
||||
|
||||
fprintf(f, "map: n=%d, dmin: %u, dmax: %u\n",
|
||||
n, reg->dist_min, reg->dist_max);
|
||||
fprintf(f, "map: n=%d, dmin: %u, dmax: %lu\n",
|
||||
n, reg->dist_min, reg->dist_max);
|
||||
if (n > 0) {
|
||||
c = 0;
|
||||
fputc('[', f);
|
||||
@ -7319,7 +7322,7 @@ onig_free(regex_t* reg)
|
||||
static void print_tree P_((FILE* f, Node* node));
|
||||
#endif
|
||||
|
||||
extern int onig_init_for_match_at(regex_t* reg);
|
||||
extern OnigPos onig_init_for_match_at(regex_t* reg);
|
||||
|
||||
static int parse_and_tune(regex_t* reg, const UChar* pattern,
|
||||
const UChar* pattern_end, ParseEnv *scan_env, Node** rroot,
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
#include "regint.h"
|
||||
|
||||
extern UChar*
|
||||
onig_error_code_to_format(int code)
|
||||
onig_error_code_to_format(OnigPos code)
|
||||
{
|
||||
char *p;
|
||||
|
||||
@ -268,7 +268,7 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,
|
||||
|
||||
|
||||
extern int
|
||||
onig_is_error_code_needs_param(int code)
|
||||
onig_is_error_code_needs_param(OnigPos code)
|
||||
{
|
||||
switch (code) {
|
||||
case ONIGERR_UNDEFINED_NAME_REFERENCE:
|
||||
@ -288,7 +288,7 @@ onig_is_error_code_needs_param(int code)
|
||||
#define MAX_ERROR_PAR_LEN 30
|
||||
|
||||
extern int ONIG_VARIADIC_FUNC_ATTR
|
||||
onig_error_code_to_str(UChar* s, int code, ...)
|
||||
onig_error_code_to_str(UChar* s, OnigPos code, ...)
|
||||
{
|
||||
UChar *p, *q;
|
||||
OnigErrorInfo* einfo;
|
||||
|
||||
@ -70,7 +70,7 @@ const OnigUChar* const _CRLF = "\r\n\0";
|
||||
|
||||
static int forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start, UChar* range, UChar** low, UChar** high);
|
||||
|
||||
static int
|
||||
static OnigPos
|
||||
search_in_range(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, /* match range */ const UChar* data_range, /* subject string range */ OnigRegion* region, OnigOptionType option, OnigMatchParam* mp);
|
||||
|
||||
|
||||
@ -178,8 +178,8 @@ typedef struct {
|
||||
#endif
|
||||
OnigMatchParam* mp;
|
||||
#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
|
||||
int best_len; /* for ONIG_OPTION_FIND_LONGEST */
|
||||
UChar* best_s;
|
||||
OnigPos best_len; /* for ONIG_OPTION_FIND_LONGEST */
|
||||
UChar* best_s;
|
||||
#endif
|
||||
#ifdef USE_CALL
|
||||
unsigned long subexp_call_in_search_counter;
|
||||
@ -923,8 +923,8 @@ onig_region_resize(OnigRegion* region, int n)
|
||||
n = ONIG_NREGION;
|
||||
|
||||
if (region->allocated == 0) {
|
||||
region->beg = (int* )xmalloc(n * sizeof(int));
|
||||
region->end = (int* )xmalloc(n * sizeof(int));
|
||||
region->beg = (OnigPos* )xmalloc(n * sizeof(*(region->beg)));
|
||||
region->end = (OnigPos* )xmalloc(n * sizeof(*(region->end)));
|
||||
|
||||
if (region->beg == 0 || region->end == 0)
|
||||
return ONIGERR_MEMORY;
|
||||
@ -932,8 +932,8 @@ onig_region_resize(OnigRegion* region, int n)
|
||||
region->allocated = n;
|
||||
}
|
||||
else if (region->allocated < n) {
|
||||
region->beg = (int* )xrealloc(region->beg, n * sizeof(int));
|
||||
region->end = (int* )xrealloc(region->end, n * sizeof(int));
|
||||
region->beg = (OnigPos* )xrealloc(region->beg, n * sizeof(*(region->beg)));
|
||||
region->end = (OnigPos* )xrealloc(region->end, n * sizeof(*(region->end)));
|
||||
|
||||
if (region->beg == 0 || region->end == 0)
|
||||
return ONIGERR_MEMORY;
|
||||
@ -975,8 +975,8 @@ onig_region_init(OnigRegion* region)
|
||||
{
|
||||
region->num_regs = 0;
|
||||
region->allocated = 0;
|
||||
region->beg = (int* )0;
|
||||
region->end = (int* )0;
|
||||
region->beg = (OnigPos* )0;
|
||||
region->end = (OnigPos* )0;
|
||||
region->history_root = (OnigCaptureTreeNode* )0;
|
||||
}
|
||||
|
||||
@ -1010,24 +1010,24 @@ onig_region_free(OnigRegion* r, int free_self)
|
||||
extern void
|
||||
onig_region_copy(OnigRegion* to, OnigRegion* from)
|
||||
{
|
||||
#define RREGC_SIZE (sizeof(int) * from->num_regs)
|
||||
#define RREGC_SIZE (sizeof(OnigPos) * from->num_regs)
|
||||
int i;
|
||||
|
||||
if (to == from) return;
|
||||
|
||||
if (to->allocated == 0) {
|
||||
if (from->num_regs > 0) {
|
||||
to->beg = (int* )xmalloc(RREGC_SIZE);
|
||||
to->beg = (OnigPos* )xmalloc(RREGC_SIZE);
|
||||
if (IS_NULL(to->beg)) return;
|
||||
to->end = (int* )xmalloc(RREGC_SIZE);
|
||||
to->end = (OnigPos* )xmalloc(RREGC_SIZE);
|
||||
if (IS_NULL(to->end)) return;
|
||||
to->allocated = from->num_regs;
|
||||
}
|
||||
}
|
||||
else if (to->allocated < from->num_regs) {
|
||||
to->beg = (int* )xrealloc(to->beg, RREGC_SIZE);
|
||||
to->beg = (OnigPos* )xrealloc(to->beg, RREGC_SIZE);
|
||||
if (IS_NULL(to->beg)) return;
|
||||
to->end = (int* )xrealloc(to->end, RREGC_SIZE);
|
||||
to->end = (OnigPos* )xrealloc(to->end, RREGC_SIZE);
|
||||
if (IS_NULL(to->end)) return;
|
||||
to->allocated = from->num_regs;
|
||||
}
|
||||
@ -2433,7 +2433,7 @@ stack_double(int* is_alloca, char** arg_alloc_base,
|
||||
} while(0)
|
||||
|
||||
static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,
|
||||
UChar* s1, UChar** ps2, int mblen)
|
||||
UChar* s1, UChar** ps2, int byte_len)
|
||||
{
|
||||
UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN];
|
||||
UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN];
|
||||
@ -2441,8 +2441,8 @@ static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,
|
||||
int len1, len2;
|
||||
|
||||
s2 = *ps2;
|
||||
end1 = s1 + mblen;
|
||||
end2 = s2 + mblen;
|
||||
end1 = s1 + byte_len;
|
||||
end2 = s2 + byte_len;
|
||||
while (s1 < end1) {
|
||||
len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, end1, buf1);
|
||||
len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, end2, buf2);
|
||||
@ -2486,7 +2486,7 @@ static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,
|
||||
#define ON_STR_END(s) ((s) == end)
|
||||
#define DATA_ENSURE_CHECK1 (s < right_range)
|
||||
#define DATA_ENSURE_CHECK(n) (s + (n) <= right_range)
|
||||
#define DATA_ENSURE(n) if (right_range - s < (n)) goto fail
|
||||
#define DATA_ENSURE(n) if (right_range - s < (OnigPos )(n)) goto fail
|
||||
|
||||
#define INIT_RIGHT_RANGE right_range = (UChar* )in_right_range
|
||||
|
||||
@ -2715,7 +2715,7 @@ onig_print_statistics(FILE* f)
|
||||
|
||||
|
||||
/* matching region of POSIX API */
|
||||
typedef int regoff_t;
|
||||
typedef ptrdiff_t regoff_t;
|
||||
|
||||
typedef struct {
|
||||
regoff_t rm_so;
|
||||
@ -2766,10 +2766,11 @@ typedef struct {
|
||||
#define MATCH_DEBUG_OUT(offset) do {\
|
||||
Operation *xp;\
|
||||
UChar *q, *bp, buf[50];\
|
||||
int len, spos;\
|
||||
spos = IS_NOT_NULL(s) ? (int )(s - str) : -1;\
|
||||
int len;\
|
||||
ptrdiff_t spos;\
|
||||
spos = IS_NOT_NULL(s) ? s - str : -1;\
|
||||
xp = p - (offset);\
|
||||
fprintf(DBGFP, "%7u: %7ld: %4d> \"",\
|
||||
fprintf(DBGFP, "%7u: %7ld: %ld> \"",\
|
||||
counter, GET_STACK_INDEX(stk), spos);\
|
||||
counter++;\
|
||||
bp = buf;\
|
||||
@ -2826,7 +2827,7 @@ typedef struct {
|
||||
|
||||
|
||||
/* match data(str - end) from position (sstart). */
|
||||
static int
|
||||
static OnigPos
|
||||
match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* in_right_range, const UChar* sstart,
|
||||
MatchArg* msa)
|
||||
@ -2943,7 +2944,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
};
|
||||
#endif
|
||||
|
||||
int i, n, num_mem, best_len, pop_level;
|
||||
OnigPos best_len;
|
||||
int i, num_mem, pop_level;
|
||||
LengthType tlen, tlen2;
|
||||
MemNumType mem;
|
||||
RelAddrType addr;
|
||||
@ -3030,8 +3032,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
#ifdef ONIG_DEBUG_MATCH
|
||||
fprintf(DBGFP, "match_at: str: %p, end: %p, start: %p\n", str, end, sstart);
|
||||
fprintf(DBGFP, "size: %d, start offset: %d\n",
|
||||
(int )(end - str), (int )(sstart - str));
|
||||
fprintf(DBGFP, "size: %ld, start offset: %ld\n", end - str, sstart - str);
|
||||
#endif
|
||||
|
||||
best_len = ONIG_MISMATCH;
|
||||
@ -3045,7 +3046,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
BYTECODE_INTERPRETER_START {
|
||||
CASE_OP(END)
|
||||
n = (int )(s - sstart);
|
||||
{
|
||||
OnigPos n;
|
||||
n = s - sstart;
|
||||
if (n == 0 && OPTON_FIND_NOT_EMPTY(options)) {
|
||||
best_len = ONIG_MISMATCH;
|
||||
goto fail; /* for retry */
|
||||
@ -3099,12 +3102,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
else {
|
||||
#endif /* USE_POSIX_API */
|
||||
region->beg[0] = (int )(keep - str);
|
||||
region->end[0] = (int )(s - str);
|
||||
region->beg[0] = keep - str;
|
||||
region->end[0] = s - str;
|
||||
for (i = 1; i <= num_mem; i++) {
|
||||
if (mem_end_stk[i].i != INVALID_STACK_INDEX) {
|
||||
region->beg[i] = (int )(STACK_MEM_START(reg, i) - str);
|
||||
region->end[i] = (int )(STACK_MEM_END(reg, i) - str);
|
||||
region->beg[i] = STACK_MEM_START(reg, i) - str;
|
||||
region->end[i] = STACK_MEM_END(reg, i) - str;
|
||||
}
|
||||
else {
|
||||
region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
|
||||
@ -3125,8 +3128,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
|
||||
node->group = 0;
|
||||
node->beg = (int )(keep - str);
|
||||
node->end = (int )(s - str);
|
||||
node->beg = keep - str;
|
||||
node->end = s - str;
|
||||
|
||||
stkp = stk_base;
|
||||
i = make_capture_history_tree(region->history_root, &stkp,
|
||||
@ -3157,7 +3160,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
/* default behavior: return first-matching result. */
|
||||
goto match_at_end;
|
||||
|
||||
}
|
||||
CASE_OP(STR_1)
|
||||
DATA_ENSURE(1);
|
||||
ps = p->exact.s;
|
||||
@ -3404,6 +3407,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
JUMP_OUT_WITH_SPREV_SET;
|
||||
|
||||
CASE_OP(ANYCHAR)
|
||||
{
|
||||
int n;
|
||||
DATA_ENSURE(1);
|
||||
n = enclen(encode, s);
|
||||
DATA_ENSURE(n);
|
||||
@ -3411,16 +3416,22 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
s += n;
|
||||
INC_OP;
|
||||
JUMP_OUT_WITH_SPREV_SET;
|
||||
}
|
||||
|
||||
CASE_OP(ANYCHAR_ML)
|
||||
{
|
||||
int n;
|
||||
DATA_ENSURE(1);
|
||||
n = enclen(encode, s);
|
||||
DATA_ENSURE(n);
|
||||
s += n;
|
||||
INC_OP;
|
||||
JUMP_OUT_WITH_SPREV_SET;
|
||||
}
|
||||
|
||||
CASE_OP(ANYCHAR_STAR)
|
||||
{
|
||||
int n;
|
||||
INC_OP;
|
||||
while (DATA_ENSURE_CHECK1) {
|
||||
STACK_PUSH_ALT(p, s);
|
||||
@ -3430,8 +3441,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
s += n;
|
||||
}
|
||||
JUMP_OUT;
|
||||
}
|
||||
|
||||
CASE_OP(ANYCHAR_ML_STAR)
|
||||
{
|
||||
int n;
|
||||
INC_OP;
|
||||
while (DATA_ENSURE_CHECK1) {
|
||||
STACK_PUSH_ALT(p, s);
|
||||
@ -3445,10 +3459,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
}
|
||||
JUMP_OUT;
|
||||
}
|
||||
|
||||
CASE_OP(ANYCHAR_STAR_PEEK_NEXT)
|
||||
{
|
||||
UChar c;
|
||||
int n;
|
||||
|
||||
c = p->anychar_star_peek_next.c;
|
||||
INC_OP;
|
||||
@ -3467,6 +3483,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
CASE_OP(ANYCHAR_ML_STAR_PEEK_NEXT)
|
||||
{
|
||||
UChar c;
|
||||
int n;
|
||||
|
||||
c = p->anychar_star_peek_next.c;
|
||||
INC_OP;
|
||||
@ -3819,13 +3836,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
backref:
|
||||
{
|
||||
UChar *pstart, *pend;
|
||||
OnigPos n;
|
||||
|
||||
if (mem_end_stk[mem].i == INVALID_STACK_INDEX) goto fail;
|
||||
if (mem_start_stk[mem].i == INVALID_STACK_INDEX) goto fail;
|
||||
|
||||
pstart = STACK_MEM_START(reg, mem);
|
||||
pend = STACK_MEM_END(reg, mem);
|
||||
n = (int )(pend - pstart);
|
||||
n = pend - pstart;
|
||||
if (n != 0) {
|
||||
DATA_ENSURE(n);
|
||||
STRING_CMP(s, pstart, n);
|
||||
@ -3838,13 +3856,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
mem = p->backref_n.n1;
|
||||
{
|
||||
UChar *pstart, *pend;
|
||||
OnigPos n;
|
||||
|
||||
if (mem_end_stk[mem].i == INVALID_STACK_INDEX) goto fail;
|
||||
if (mem_start_stk[mem].i == INVALID_STACK_INDEX) goto fail;
|
||||
|
||||
pstart = STACK_MEM_START(reg, mem);
|
||||
pend = STACK_MEM_END(reg, mem);
|
||||
n = (int )(pend - pstart);
|
||||
n = pend - pstart;
|
||||
if (n != 0) {
|
||||
DATA_ENSURE(n);
|
||||
STRING_CMP_IC(case_fold_flag, pstart, &s, n);
|
||||
@ -3857,6 +3876,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
{
|
||||
int is_fail;
|
||||
UChar *pstart, *pend, *swork;
|
||||
OnigPos n;
|
||||
|
||||
tlen = p->backref_general.num;
|
||||
for (i = 0; i < tlen; i++) {
|
||||
@ -3867,7 +3887,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
pstart = STACK_MEM_START(reg, mem);
|
||||
pend = STACK_MEM_END(reg, mem);
|
||||
n = (int )(pend - pstart);
|
||||
n = pend - pstart;
|
||||
if (n != 0) {
|
||||
DATA_ENSURE(n);
|
||||
swork = s;
|
||||
@ -3886,6 +3906,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
{
|
||||
int is_fail;
|
||||
UChar *pstart, *pend, *swork;
|
||||
OnigPos n;
|
||||
|
||||
tlen = p->backref_general.num;
|
||||
for (i = 0; i < tlen; i++) {
|
||||
@ -3896,7 +3917,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
pstart = STACK_MEM_START(reg, mem);
|
||||
pend = STACK_MEM_END(reg, mem);
|
||||
n = (int )(pend - pstart);
|
||||
n = pend - pstart;
|
||||
if (n != 0) {
|
||||
DATA_ENSURE(n);
|
||||
swork = s;
|
||||
@ -3913,20 +3934,20 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
#ifdef USE_BACKREF_WITH_LEVEL
|
||||
CASE_OP(BACKREF_WITH_LEVEL_IC)
|
||||
n = 1; /* ignore case */
|
||||
i = 1; /* ignore case */
|
||||
goto backref_with_level;
|
||||
CASE_OP(BACKREF_WITH_LEVEL)
|
||||
{
|
||||
int level;
|
||||
MemNumType* mems;
|
||||
|
||||
n = 0;
|
||||
i = 0;
|
||||
backref_with_level:
|
||||
level = p->backref_general.nest_level;
|
||||
tlen = p->backref_general.num;
|
||||
mems = tlen == 1 ? &(p->backref_general.n1) : p->backref_general.ns;
|
||||
|
||||
if (! backref_match_at_nested_level(reg, stk, stk_base, n,
|
||||
if (! backref_match_at_nested_level(reg, stk, stk_base, i,
|
||||
case_fold_flag, level, (int )tlen, mems, &s, end)) {
|
||||
goto fail;
|
||||
}
|
||||
@ -4137,6 +4158,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
JUMP_OUT;
|
||||
|
||||
CASE_OP(REPEAT_INC)
|
||||
{
|
||||
int n;
|
||||
|
||||
mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */
|
||||
STACK_GET_REPEAT_COUNT(mem, n);
|
||||
n++;
|
||||
@ -4154,8 +4178,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
STACK_PUSH_REPEAT_INC(mem, n);
|
||||
CHECK_INTERRUPT_JUMP_OUT;
|
||||
}
|
||||
|
||||
CASE_OP(REPEAT_INC_NG)
|
||||
{
|
||||
int n;
|
||||
|
||||
mem = p->repeat_inc.id; /* mem: OP_REPEAT ID */
|
||||
STACK_GET_REPEAT_COUNT(mem, n);
|
||||
n++;
|
||||
@ -4173,6 +4201,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
}
|
||||
CHECK_INTERRUPT_JUMP_OUT;
|
||||
}
|
||||
|
||||
#ifdef USE_CALL
|
||||
CASE_OP(CALL)
|
||||
@ -4490,9 +4519,10 @@ regset_search_body_position_lead(OnigRegSet* set,
|
||||
const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range, /* match start range */
|
||||
const UChar* orig_range, /* data range */
|
||||
OnigOptionType option, MatchArg* msas, int* rmatch_pos)
|
||||
OnigOptionType option, MatchArg* msas, OnigPos* rmatch_pos)
|
||||
{
|
||||
int r, n, i;
|
||||
OnigPos r;
|
||||
int n, i;
|
||||
UChar *s;
|
||||
UChar *low, *high;
|
||||
UChar* sch_range;
|
||||
@ -4512,7 +4542,7 @@ regset_search_body_position_lead(OnigRegSet* set,
|
||||
|
||||
sr[i].state = SRS_DEAD;
|
||||
if (reg->optimize != OPTIMIZE_NONE) {
|
||||
if (reg->dist_max != INFINITE_LEN) {
|
||||
if (reg->dist_max != INFINITE_SIZE) {
|
||||
if (DIST_CAST(end - range) > reg->dist_max)
|
||||
sch_range = (UChar* )range + reg->dist_max;
|
||||
else
|
||||
@ -4625,23 +4655,24 @@ regset_search_body_position_lead(OnigRegSet* set,
|
||||
xfree(sr);
|
||||
return ONIG_MISMATCH;
|
||||
|
||||
/* error */
|
||||
finish:
|
||||
xfree(sr);
|
||||
return r;
|
||||
return (int )r;
|
||||
|
||||
match:
|
||||
xfree(sr);
|
||||
*rmatch_pos = (int )(s - str);
|
||||
*rmatch_pos = s - str;
|
||||
return i;
|
||||
}
|
||||
|
||||
static inline int
|
||||
regset_search_body_regex_lead(OnigRegSet* set,
|
||||
const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* orig_range, OnigRegSetLead lead,
|
||||
OnigOptionType option, OnigMatchParam* mps[], int* rmatch_pos)
|
||||
const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* orig_range, OnigRegSetLead lead,
|
||||
OnigOptionType option, OnigMatchParam* mps[], OnigPos* rmatch_pos)
|
||||
{
|
||||
int r;
|
||||
OnigPos r;
|
||||
int i;
|
||||
int n;
|
||||
int match_index;
|
||||
@ -4682,7 +4713,7 @@ onig_regset_search_with_param(OnigRegSet* set,
|
||||
const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range,
|
||||
OnigRegSetLead lead, OnigOptionType option, OnigMatchParam* mps[],
|
||||
int* rmatch_pos)
|
||||
OnigPos* rmatch_pos)
|
||||
{
|
||||
int r;
|
||||
int i;
|
||||
@ -4729,7 +4760,7 @@ onig_regset_search_with_param(OnigRegSet* set,
|
||||
}
|
||||
|
||||
if (set->anchor != OPTIMIZE_NONE && str < end) {
|
||||
UChar *min_semi_end, *max_semi_end;
|
||||
UChar *min_semi_end;
|
||||
|
||||
if ((set->anchor & ANCR_BEGIN_POSITION) != 0) {
|
||||
/* search start-position only */
|
||||
@ -4742,26 +4773,25 @@ onig_regset_search_with_param(OnigRegSet* set,
|
||||
range = str + 1;
|
||||
}
|
||||
else if ((set->anchor & ANCR_END_BUF) != 0) {
|
||||
min_semi_end = max_semi_end = (UChar* )end;
|
||||
min_semi_end = (UChar* )end;
|
||||
|
||||
end_buf:
|
||||
if ((OnigLen )(max_semi_end - str) < set->anc_dmin)
|
||||
if (DIST_CAST(end - str) < set->anc_dmin)
|
||||
goto mismatch_no_msa;
|
||||
|
||||
if ((OnigLen )(min_semi_end - start) > set->anc_dmax) {
|
||||
if (DIST_CAST(min_semi_end - start) > set->anc_dmax) {
|
||||
start = min_semi_end - set->anc_dmax;
|
||||
if (start < end)
|
||||
start = onigenc_get_right_adjust_char_head(enc, str, start);
|
||||
}
|
||||
if ((OnigLen )(max_semi_end - (range - 1)) < set->anc_dmin) {
|
||||
range = max_semi_end - set->anc_dmin + 1;
|
||||
if (DIST_CAST(end - (range - 1)) < set->anc_dmin) {
|
||||
range = end - set->anc_dmin + 1;
|
||||
}
|
||||
if (start > range) goto mismatch_no_msa;
|
||||
}
|
||||
else if ((set->anchor & ANCR_SEMI_END_BUF) != 0) {
|
||||
UChar* pre_end = ONIGENC_STEP_BACK(enc, str, end, 1);
|
||||
|
||||
max_semi_end = (UChar* )end;
|
||||
if (ONIGENC_IS_MBC_NEWLINE(enc, pre_end, end)) {
|
||||
min_semi_end = pre_end;
|
||||
|
||||
@ -4786,7 +4816,7 @@ onig_regset_search_with_param(OnigRegSet* set,
|
||||
}
|
||||
}
|
||||
else if (str == end) { /* empty string */
|
||||
start = end = str;
|
||||
start = str;
|
||||
s = (UChar* )start;
|
||||
|
||||
msas = (MatchArg* )xmalloc(sizeof(*msas) * set->n);
|
||||
@ -4802,13 +4832,17 @@ onig_regset_search_with_param(OnigRegSet* set,
|
||||
/* Can't use REGSET_MATCH_AND_RETURN_CHECK()
|
||||
because r must be set regex index (i)
|
||||
*/
|
||||
r = match_at(reg, str, end, end, s, msas + i);
|
||||
if (r != ONIG_MISMATCH) {
|
||||
if (r >= 0) {
|
||||
OnigPos pos;
|
||||
pos = match_at(reg, str, end, end, s, msas + i);
|
||||
if (pos != ONIG_MISMATCH) {
|
||||
if (pos >= 0) {
|
||||
r = i;
|
||||
goto match;
|
||||
}
|
||||
else goto finish; /* error */
|
||||
else {
|
||||
r = (int )pos;
|
||||
goto finish; /* error */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4871,8 +4905,8 @@ onig_regset_search_with_param(OnigRegSet* set,
|
||||
|
||||
extern int
|
||||
onig_regset_search(OnigRegSet* set, const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range,
|
||||
OnigRegSetLead lead, OnigOptionType option, int* rmatch_pos)
|
||||
const UChar* start, const UChar* range,
|
||||
OnigRegSetLead lead, OnigOptionType option, OnigPos* rmatch_pos)
|
||||
{
|
||||
int r;
|
||||
int i;
|
||||
@ -5103,11 +5137,11 @@ map_search_backward(OnigEncoding enc, UChar map[],
|
||||
}
|
||||
return (UChar* )NULL;
|
||||
}
|
||||
extern int
|
||||
extern OnigPos
|
||||
onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
|
||||
OnigRegion* region, OnigOptionType option)
|
||||
{
|
||||
int r;
|
||||
OnigPos r;
|
||||
OnigMatchParam mp;
|
||||
|
||||
onig_initialize_match_param(&mp);
|
||||
@ -5116,12 +5150,12 @@ onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
|
||||
return r;
|
||||
}
|
||||
|
||||
extern int
|
||||
extern OnigPos
|
||||
onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* at, OnigRegion* region, OnigOptionType option,
|
||||
OnigMatchParam* mp)
|
||||
{
|
||||
int r;
|
||||
OnigPos r;
|
||||
MatchArg msa;
|
||||
|
||||
#ifndef USE_POSIX_API
|
||||
@ -5135,7 +5169,7 @@ onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end,
|
||||
&& !OPTON_POSIX_REGION(option)
|
||||
#endif
|
||||
) {
|
||||
r = onig_region_resize_clear(region, reg->num_mem + 1);
|
||||
r = (OnigPos )onig_region_resize_clear(region, reg->num_mem + 1);
|
||||
}
|
||||
else
|
||||
r = 0;
|
||||
@ -5260,7 +5294,7 @@ forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start,
|
||||
*high = p;
|
||||
}
|
||||
else {
|
||||
if (reg->dist_max != INFINITE_LEN) {
|
||||
if (reg->dist_max != INFINITE_SIZE) {
|
||||
if (DIST_CAST(p - str) < reg->dist_max) {
|
||||
*low = (UChar* )str;
|
||||
}
|
||||
@ -5280,9 +5314,8 @@ forward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* start,
|
||||
|
||||
#ifdef ONIG_DEBUG_SEARCH
|
||||
fprintf(DBGFP,
|
||||
"forward_search success: low: %d, high: %d, dmin: %u, dmax: %u\n",
|
||||
(int )(*low - str), (int )(*high - str),
|
||||
reg->dist_min, reg->dist_max);
|
||||
"forward_search success: low: %ld, high: %ld, dmin: %u, dmax: %lu\n",
|
||||
*low - str, *high - str, reg->dist_min, reg->dist_max);
|
||||
#endif
|
||||
return 1; /* success */
|
||||
}
|
||||
@ -5364,7 +5397,7 @@ backward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
|
||||
}
|
||||
}
|
||||
|
||||
if (reg->dist_max != INFINITE_LEN) {
|
||||
if (reg->dist_max != INFINITE_SIZE) {
|
||||
if (DIST_CAST(p - str) < reg->dist_max)
|
||||
*low = (UChar* )str;
|
||||
else
|
||||
@ -5398,12 +5431,12 @@ backward_search(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
|
||||
}
|
||||
|
||||
|
||||
extern int
|
||||
extern OnigPos
|
||||
onig_search(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range, OnigRegion* region,
|
||||
OnigOptionType option)
|
||||
{
|
||||
int r;
|
||||
OnigPos r;
|
||||
OnigMatchParam mp;
|
||||
const UChar* data_range;
|
||||
|
||||
@ -5423,22 +5456,22 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
}
|
||||
|
||||
static int
|
||||
static OnigPos
|
||||
search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range, /* match start range */
|
||||
const UChar* data_range, /* subject string range */
|
||||
OnigRegion* region,
|
||||
OnigOptionType option, OnigMatchParam* mp)
|
||||
{
|
||||
int r;
|
||||
OnigPos r;
|
||||
UChar *s;
|
||||
MatchArg msa;
|
||||
const UChar *orig_start = start;
|
||||
|
||||
#ifdef ONIG_DEBUG_SEARCH
|
||||
fprintf(DBGFP,
|
||||
"onig_search (entry point): str: %p, end: %d, start: %d, range: %d\n",
|
||||
str, (int )(end - str), (int )(start - str), (int )(range - str));
|
||||
"onig_search (entry point): str: %p, end: %ld, start: %ld, range: %ld\n",
|
||||
str, end - str, start - str, range - str);
|
||||
#endif
|
||||
|
||||
ADJUST_MATCH_PARAM(reg, mp);
|
||||
@ -5455,7 +5488,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
&& ! OPTON_POSIX_REGION(option)
|
||||
#endif
|
||||
) {
|
||||
r = onig_region_resize_clear(region, reg->num_mem + 1);
|
||||
r = (OnigPos )onig_region_resize_clear(region, reg->num_mem + 1);
|
||||
if (r != 0) goto finish_no_msa;
|
||||
}
|
||||
|
||||
@ -5481,7 +5514,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
/* anchor optimize: resume search range */
|
||||
if (reg->anchor != 0 && str < end) {
|
||||
UChar *min_semi_end, *max_semi_end;
|
||||
UChar *min_semi_end;
|
||||
|
||||
if (reg->anchor & ANCR_BEGIN_POSITION) {
|
||||
/* search start-position only */
|
||||
@ -5507,10 +5540,10 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
}
|
||||
else if (reg->anchor & ANCR_END_BUF) {
|
||||
min_semi_end = max_semi_end = (UChar* )end;
|
||||
min_semi_end = (UChar* )end;
|
||||
|
||||
end_buf:
|
||||
if ((OnigLen )(max_semi_end - str) < reg->anc_dist_min)
|
||||
if (DIST_CAST(end - str) < reg->anc_dist_min)
|
||||
goto mismatch_no_msa;
|
||||
|
||||
if (range > start) {
|
||||
@ -5520,11 +5553,11 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
if (start < end)
|
||||
start = onigenc_get_right_adjust_char_head(reg->enc, str, start);
|
||||
}
|
||||
if (DIST_CAST(max_semi_end - (range - 1)) < reg->anc_dist_min) {
|
||||
if (DIST_CAST(max_semi_end - str + 1) < reg->anc_dist_min)
|
||||
if (DIST_CAST(end - (range - 1)) < reg->anc_dist_min) {
|
||||
if (DIST_CAST(end - str + 1) < reg->anc_dist_min)
|
||||
goto mismatch_no_msa;
|
||||
else
|
||||
range = max_semi_end - reg->anc_dist_min + 1;
|
||||
range = end - reg->anc_dist_min + 1;
|
||||
}
|
||||
|
||||
if (start > range) goto mismatch_no_msa;
|
||||
@ -5536,11 +5569,11 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
DIST_CAST(min_semi_end - range) > reg->anc_dist_max) {
|
||||
range = min_semi_end - reg->anc_dist_max;
|
||||
}
|
||||
if (DIST_CAST(max_semi_end - start) < reg->anc_dist_min) {
|
||||
if (DIST_CAST(max_semi_end - str) < reg->anc_dist_min)
|
||||
if (DIST_CAST(end - start) < reg->anc_dist_min) {
|
||||
if (DIST_CAST(end - str) < reg->anc_dist_min)
|
||||
goto mismatch_no_msa;
|
||||
else {
|
||||
start = max_semi_end - reg->anc_dist_min;
|
||||
start = end - reg->anc_dist_min;
|
||||
start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start);
|
||||
}
|
||||
}
|
||||
@ -5550,7 +5583,6 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
else if (reg->anchor & ANCR_SEMI_END_BUF) {
|
||||
UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1);
|
||||
|
||||
max_semi_end = (UChar* )end;
|
||||
if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) {
|
||||
min_semi_end = pre_end;
|
||||
|
||||
@ -5593,8 +5625,8 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
}
|
||||
|
||||
#ifdef ONIG_DEBUG_SEARCH
|
||||
fprintf(DBGFP, "onig_search(apply anchor): end: %d, start: %d, range: %d\n",
|
||||
(int )(end - str), (int )(start - str), (int )(range - str));
|
||||
fprintf(DBGFP, "onig_search(apply anchor): end: %ld, start: %ld, range: %ld\n",
|
||||
end - str, start - str, range - str);
|
||||
#endif
|
||||
|
||||
MATCH_ARG_INIT(msa, reg, option, region, orig_start, mp);
|
||||
@ -5605,7 +5637,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
UChar *sch_range, *low, *high;
|
||||
|
||||
if (reg->dist_max != 0) {
|
||||
if (reg->dist_max == INFINITE_LEN)
|
||||
if (reg->dist_max == INFINITE_SIZE)
|
||||
sch_range = (UChar* )end;
|
||||
else {
|
||||
if (DIST_CAST(end - range) < reg->dist_max)
|
||||
@ -5621,7 +5653,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
if ((end - start) < reg->threshold_len)
|
||||
goto mismatch;
|
||||
|
||||
if (reg->dist_max != INFINITE_LEN) {
|
||||
if (reg->dist_max != INFINITE_SIZE) {
|
||||
do {
|
||||
if (! forward_search(reg, str, end, s, sch_range, &low, &high))
|
||||
goto mismatch;
|
||||
@ -5689,7 +5721,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
else
|
||||
min_range = end;
|
||||
|
||||
if (reg->dist_max != INFINITE_LEN) {
|
||||
if (reg->dist_max != INFINITE_SIZE) {
|
||||
do {
|
||||
if (DIST_CAST(end - s) > reg->dist_max)
|
||||
sch_start = s + reg->dist_max;
|
||||
@ -5751,7 +5783,7 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
|
||||
#ifdef ONIG_DEBUG
|
||||
if (r != ONIG_MISMATCH)
|
||||
fprintf(DBGFP, "onig_search: error %d\n", r);
|
||||
fprintf(DBGFP, "onig_search: error %ld\n", r);
|
||||
#endif
|
||||
return r;
|
||||
|
||||
@ -5760,19 +5792,19 @@ search_in_range(regex_t* reg, const UChar* str, const UChar* end,
|
||||
finish_no_msa:
|
||||
#ifdef ONIG_DEBUG
|
||||
if (r != ONIG_MISMATCH)
|
||||
fprintf(DBGFP, "onig_search: error %d\n", r);
|
||||
fprintf(DBGFP, "onig_search: error %ld\n", r);
|
||||
#endif
|
||||
return r;
|
||||
|
||||
match:
|
||||
MATCH_ARG_FREE(msa);
|
||||
return (int )(s - str);
|
||||
return s - str;
|
||||
}
|
||||
|
||||
extern int
|
||||
extern OnigPos
|
||||
onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
|
||||
const UChar* start, const UChar* range, OnigRegion* region,
|
||||
OnigOptionType option, OnigMatchParam* mp)
|
||||
const UChar* start, const UChar* range, OnigRegion* region,
|
||||
OnigOptionType option, OnigMatchParam* mp)
|
||||
{
|
||||
const UChar* data_range;
|
||||
|
||||
@ -5788,10 +5820,10 @@ onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
|
||||
extern int
|
||||
onig_scan(regex_t* reg, const UChar* str, const UChar* end,
|
||||
OnigRegion* region, OnigOptionType option,
|
||||
int (*scan_callback)(int, int, OnigRegion*, void*),
|
||||
int (*scan_callback)(int, OnigPos, OnigRegion*, void*),
|
||||
void* callback_arg)
|
||||
{
|
||||
int r;
|
||||
OnigPos r;
|
||||
int n;
|
||||
int rs;
|
||||
const UChar* start;
|
||||
@ -5827,7 +5859,7 @@ onig_scan(regex_t* reg, const UChar* str, const UChar* end,
|
||||
break;
|
||||
}
|
||||
else { /* error */
|
||||
return r;
|
||||
return (int )r;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5958,7 +5990,7 @@ update_regset_by_reg(OnigRegSet* set, regex_t* reg)
|
||||
set->anc_dmin = reg->anc_dist_min;
|
||||
set->anc_dmax = reg->anc_dist_max;
|
||||
set->all_low_high =
|
||||
(reg->optimize == OPTIMIZE_NONE || reg->dist_max == INFINITE_LEN) ? 0 : 1;
|
||||
(reg->optimize == OPTIMIZE_NONE || reg->dist_max == INFINITE_SIZE) ? 0 : 1;
|
||||
set->anychar_inf = (reg->anchor & ANCR_ANYCHAR_INF) != 0 ? 1 : 0;
|
||||
}
|
||||
else {
|
||||
@ -5979,7 +6011,7 @@ update_regset_by_reg(OnigRegSet* set, regex_t* reg)
|
||||
|
||||
set->anchor = anchor;
|
||||
|
||||
if (reg->optimize == OPTIMIZE_NONE || reg->dist_max == INFINITE_LEN)
|
||||
if (reg->optimize == OPTIMIZE_NONE || reg->dist_max == INFINITE_SIZE)
|
||||
set->all_low_high = 0;
|
||||
|
||||
if ((reg->anchor & ANCR_ANYCHAR_INF) != 0)
|
||||
@ -6105,7 +6137,7 @@ onig_regset_get_region(OnigRegSet* set, int at)
|
||||
|
||||
|
||||
#ifdef USE_DIRECT_THREADED_CODE
|
||||
extern int
|
||||
extern OnigPos
|
||||
onig_init_for_match_at(regex_t* reg)
|
||||
{
|
||||
return match_at(reg, (const UChar* )NULL, (const UChar* )NULL,
|
||||
|
||||
@ -287,6 +287,10 @@ typedef unsigned __int64 uint64_t;
|
||||
#endif
|
||||
#endif /* _WIN32 */
|
||||
|
||||
typedef size_t OnigSize;
|
||||
|
||||
#define INFINITE_SIZE ~((OnigSize )0)
|
||||
|
||||
#if SIZEOF_VOIDP == SIZEOF_LONG
|
||||
typedef unsigned long hash_data_type;
|
||||
#elif SIZEOF_VOIDP == SIZEOF_LONG_LONG
|
||||
@ -925,7 +929,7 @@ struct re_pattern_buffer {
|
||||
unsigned char map[CHAR_MAP_SIZE]; /* used as BMH skip or char-map */
|
||||
int map_offset;
|
||||
OnigLen dist_min; /* min-distance of exact or map */
|
||||
OnigLen dist_max; /* max-distance of exact or map */
|
||||
OnigSize dist_max; /* max-distance of exact or map */
|
||||
RegexExt* extp;
|
||||
};
|
||||
|
||||
@ -937,7 +941,7 @@ struct re_pattern_buffer {
|
||||
|
||||
extern void onig_add_end_call(void (*func)(void));
|
||||
extern void onig_warning(const char* s);
|
||||
extern UChar* onig_error_code_to_format P_((int code));
|
||||
extern UChar* onig_error_code_to_format P_((OnigPos code));
|
||||
extern void ONIG_VARIADIC_FUNC_ATTR onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));
|
||||
extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo));
|
||||
extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc));
|
||||
|
||||
@ -66,7 +66,7 @@ typedef struct {
|
||||
} O2PERR;
|
||||
|
||||
static int
|
||||
onig2posix_error_code(int code)
|
||||
onig2posix_error_code(OnigPos code)
|
||||
{
|
||||
static const O2PERR o2p[] = {
|
||||
{ ONIG_MISMATCH, REG_NOMATCH },
|
||||
@ -147,11 +147,13 @@ onig2posix_error_code(int code)
|
||||
};
|
||||
|
||||
int i;
|
||||
int icode;
|
||||
|
||||
if (code >= 0) return 0;
|
||||
|
||||
icode = (int )code;
|
||||
for (i = 0; i < (int )(sizeof(o2p) / sizeof(o2p[0])); i++) {
|
||||
if (code == o2p[i].onig_err)
|
||||
if (icode == o2p[i].onig_err)
|
||||
return o2p[i].posix_err;
|
||||
}
|
||||
|
||||
@ -197,6 +199,7 @@ onig_posix_regexec(onig_posix_regex_t* reg, const char* str, size_t nmatch,
|
||||
onig_posix_regmatch_t pmatch[], int posix_options)
|
||||
{
|
||||
int r, i, len;
|
||||
OnigPos pos;
|
||||
UChar* end;
|
||||
onig_posix_regmatch_t* pm;
|
||||
OnigOptionType options;
|
||||
@ -221,22 +224,22 @@ onig_posix_regexec(onig_posix_regex_t* reg, const char* str, size_t nmatch,
|
||||
|
||||
ENC_STRING_LEN(ONIG_C(reg)->enc, str, len);
|
||||
end = (UChar* )(str + len);
|
||||
r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end,
|
||||
(OnigRegion* )pm, options);
|
||||
pos = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end,
|
||||
(OnigRegion* )pm, options);
|
||||
|
||||
if (r >= 0) {
|
||||
if (pos >= 0) {
|
||||
r = 0; /* Match */
|
||||
if (pm != pmatch && pm != NULL) {
|
||||
xmemcpy(pmatch, pm, sizeof(onig_posix_regmatch_t) * nmatch);
|
||||
}
|
||||
}
|
||||
else if (r == ONIG_MISMATCH) {
|
||||
else if (pos == ONIG_MISMATCH) {
|
||||
r = REG_NOMATCH;
|
||||
for (i = 0; i < (int )nmatch; i++)
|
||||
pmatch[i].rm_so = pmatch[i].rm_eo = ONIG_REGION_NOTPOS;
|
||||
}
|
||||
else {
|
||||
r = onig2posix_error_code(r);
|
||||
r = onig2posix_error_code(pos);
|
||||
}
|
||||
|
||||
if (pm != pmatch && pm != NULL)
|
||||
|
||||
@ -1 +1 @@
|
||||
6.9.7
|
||||
7.0.0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user