diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index a5c2bfbe0..1579ca8b5 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 beta diff --git a/scintilla/Scintilla.vcxproj b/scintilla/Scintilla.vcxproj index adfdab246..25a984433 100644 --- a/scintilla/Scintilla.vcxproj +++ b/scintilla/Scintilla.vcxproj @@ -359,12 +359,10 @@ - - diff --git a/scintilla/Scintilla.vcxproj.filters b/scintilla/Scintilla.vcxproj.filters index 64150147e..710d6ca2e 100644 --- a/scintilla/Scintilla.vcxproj.filters +++ b/scintilla/Scintilla.vcxproj.filters @@ -123,9 +123,6 @@ oniguruma\src - - oniguruma\src - oniguruma\src @@ -138,9 +135,6 @@ oniguruma\src - - oniguruma\src - oniguruma\src diff --git a/scintilla/oniguruma/README b/scintilla/oniguruma/README index c72da97a8..bef6afce6 100644 --- a/scintilla/oniguruma/README +++ b/scintilla/oniguruma/README @@ -1,4 +1,4 @@ -README 2018/04/05 +README 2021/06/23 Oniguruma ---- (C) K.Kosako @@ -146,7 +146,6 @@ Source Files regcomp.c compiling and optimization functions regenc.c character encodings framework. regerror.c error message function - regext.c extended API functions. (deluxe version API) regexec.c search and match functions regparse.c parsing functions. regsyntax.c pattern syntax functions and built-in syntax definitions. diff --git a/scintilla/oniguruma/README.md b/scintilla/oniguruma/README.md index eeb29e8a6..a8aea77aa 100644 --- a/scintilla/oniguruma/README.md +++ b/scintilla/oniguruma/README.md @@ -7,6 +7,9 @@ Oniguruma ========= +**For a long time, Oniguruma has been under attack on Google search.** [(Issue #234)](https://github.com/kkos/oniguruma/issues/234) + + https://github.com/kkos/oniguruma Oniguruma is a modern and flexible regular expressions library. It @@ -247,7 +250,6 @@ Source Files |regcomp.c |compiling and optimization functions | |regenc.c |character encodings framework | |regerror.c |error message function | -|regext.c |extended API functions (deluxe version API) | |regexec.c |search and match functions | |regparse.c |parsing functions. | |regsyntax.c |pattern syntax functions and built-in syntax definitions| diff --git a/scintilla/oniguruma/doc/API b/scintilla/oniguruma/doc/API index b164c68ba..48e34d518 100644 --- a/scintilla/oniguruma/doc/API +++ b/scintilla/oniguruma/doc/API @@ -1,4 +1,4 @@ -Oniguruma API Version 7.0.0 2021/04/26 +Oniguruma API Version 7.0.0 2021/06/23 #include @@ -9,8 +9,6 @@ Oniguruma API Version 7.0.0 2021/04/26 You have to call it explicitly. - * onig_init() is deprecated. - arguments 1 use_encodings: array of encodings used in application. 2 num_encodings: number of encodings. @@ -175,54 +173,6 @@ Oniguruma API Version 7.0.0 2021/04/26 error: error code < 0 -# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigCompileInfo* ci, OnigErrorInfo* einfo) - - This function is deprecated, and it does not allow the case where - the encoding of pattern and target is different. - - Create a regex object. - This function is deluxe version of onig_new(). - - return value - normal: ONIG_NORMAL == 0 - error: error code < 0 - - arguments - 1 reg: return address of regex object. - 2 pattern: regex pattern string. - 3 pattern_end: terminate address of pattern. (pattern + pattern length) - 4 ci: compile time info. - - ci->num_of_elements: number of elements in ci. (current version: 5) - ci->pattern_enc: pattern string character encoding. - ci->target_enc: target string character encoding. - ci->syntax: address of pattern syntax definition. - ci->option: compile time option. - ci->case_fold_flag: character matching case fold bit flag for - ONIG_OPTION_IGNORECASE mode. - - ONIGENC_CASE_FOLD_MIN: minimum - ONIGENC_CASE_FOLD_DEFAULT: minimum - onig_set_default_case_fold_flag() - - 5 err_info: address for return optional error info. - Use this value as 3rd argument of onig_error_code_to_str(). - - - Different character encoding combination is allowed for - the following cases only. - - pattern_enc: ASCII, ISO_8859_1 - target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE - - pattern_enc: UTF16_BE/LE - target_enc: UTF16_LE/BE - - pattern_enc: UTF32_BE/LE - target_enc: UTF32_LE/BE - - # void onig_free(regex_t* reg) Free memory used by regex object. @@ -700,15 +650,6 @@ Oniguruma API Version 7.0.0 2021/04/26 1 reg: regex object. -# OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg) - - Return the case_fold_flag of the regex object. - This function is deprecated. - - arguments - 1 reg: regex object. - - # int onig_number_of_captures(regex_t* reg) Return the number of capture group in the pattern. @@ -929,20 +870,6 @@ Oniguruma API Version 7.0.0 2021/04/26 3 code: meta character or ONIG_INEFFECTIVE_META_CHAR. -# OnigCaseFoldType onig_get_default_case_fold_flag() - - Get default case fold flag. - This function is deprecated. - - -# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) - - Set default case fold flag. - This function is deprecated. - - 1 case_fold_flag: case fold flag - - # unsigned int onig_get_match_stack_limit_size(void) Return the maximum number of stack size. diff --git a/scintilla/oniguruma/doc/CHANGES_7.0 b/scintilla/oniguruma/doc/CHANGES_7.0 index 0047571a5..6e4e58020 100644 --- a/scintilla/oniguruma/doc/CHANGES_7.0 +++ b/scintilla/oniguruma/doc/CHANGES_7.0 @@ -1,4 +1,4 @@ -CHANGES_7.0 2021/05/17 +CHANGES_7.0 2021/06/23 The changes from 6.9 to 7.0 are shown below. @@ -14,7 +14,7 @@ The changes from 6.9 to 7.0 are shown below. + Move the definition of OnigEncodingType structure from oniguruma.h to regenc.h - + Removed from oniguruma.h + + Removed macros from oniguruma.h ONIGENC_IS_MBC_WORD_ASCII() ONIGENC_MBC_CASE_FOLD() ONIGENC_LEFT_ADJUST_CHAR_HEAD() @@ -45,13 +45,19 @@ The changes from 6.9 to 7.0 are shown below. ONIGENC_CODE_TO_MBC() -> onigenc_code_to_mbc() ONIGENC_IS_CODE_CTYPE() -> onigenc_is_code_ctype() + + Removed deprecated functions + onig_init() + onig_new_deluxe() + onig_get_case_fold_flag() + onig_get_default_case_fold_flag() + onig_set_default_case_fold_flag() + * Will change + Increase the size of the ONIG_SYN_OP/OP2_XXX flag area. + Improve the API of syntax-op. (Eliminate the distinction between OP and OP2) - + Eliminate deprecated functions. + update LTVERSION diff --git a/scintilla/oniguruma/src/Makefile.windows b/scintilla/oniguruma/src/Makefile.windows index b6377723c..cba6a7b86 100644 --- a/scintilla/oniguruma/src/Makefile.windows +++ b/scintilla/oniguruma/src/Makefile.windows @@ -42,7 +42,7 @@ headers = $(posixheaders) $(onigheaders) onigobjs = $(BUILD_DIR)/reggnu.obj $(BUILD_DIR)/regerror.obj $(BUILD_DIR)/regparse.obj $(BUILD_DIR)/regext.obj $(BUILD_DIR)/regcomp.obj \ $(BUILD_DIR)/regexec.obj $(BUILD_DIR)/regenc.obj $(BUILD_DIR)/regsyntax.obj $(BUILD_DIR)/regtrav.obj \ - $(BUILD_DIR)/regversion.obj $(BUILD_DIR)/st.obj $(BUILD_DIR)/onig_init.obj + $(BUILD_DIR)/regversion.obj $(BUILD_DIR)/st.obj libobjs = $(onigobjs) $(posixobjs) jp_objs = $(BUILD_DIR)/euc_jp.obj $(BUILD_DIR)/sjis.obj @@ -68,7 +68,7 @@ encobjs = $(BUILD_DIR)/ascii.obj $(BUILD_DIR)/utf8.obj \ $(BUILD_DIR)/unicode_unfold_key.obj $(BUILD_DIR)/unicode_fold1_key.obj \ $(BUILD_DIR)/unicode_fold2_key.obj $(BUILD_DIR)/unicode_fold3_key.obj # $(BUILD_DIR)/koi8.obj -onigsources = $(ONIG_DIR)/regerror.c $(ONIG_DIR)/regparse.c $(ONIG_DIR)/regext.c $(ONIG_DIR)/regcomp.c $(ONIG_DIR)/regexec.c $(ONIG_DIR)/regenc.c \ +onigsources = $(ONIG_DIR)/regerror.c $(ONIG_DIR)/regparse.c $(ONIG_DIR)/regcomp.c $(ONIG_DIR)/regexec.c $(ONIG_DIR)/regenc.c \ $(ONIG_DIR)/regsyntax.c $(ONIG_DIR)/regtrav.c $(ONIG_DIR)/regversion.c $(ONIG_DIR)/reggnu.c $(ONIG_DIR)/st.c posixsources = $(ONIG_DIR)/regposix.c $(ONIG_DIR)/regposerr.c libsources = $(posixsources) $(onigsources) @@ -101,7 +101,6 @@ $(dllname): $(libobjs) $(encobjs) $(ARDLL) $(libobjs) $(encobjs) -Fe$@ $(ARDLL_FLAGS) $(BUILD_DIR)/regparse.obj: $(ONIG_DIR)/regparse.c $(onigheaders) $(BUILD_DIR)/config.h -$(BUILD_DIR)/regext.obj: $(ONIG_DIR)/regext.c $(onigheaders) $(BUILD_DIR)/config.h $(BUILD_DIR)/regtrav.obj: $(ONIG_DIR)/regtrav.c $(onigheaders) $(BUILD_DIR)/config.h $(BUILD_DIR)/regcomp.obj: $(ONIG_DIR)/regcomp.c $(onigheaders) $(BUILD_DIR)/config.h $(BUILD_DIR)/regexec.obj: $(ONIG_DIR)/regexec.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/regenc.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h @@ -113,7 +112,6 @@ $(BUILD_DIR)/regversion.obj: $(ONIG_DIR)/regversion.c $(ONIG_DIR)/oniguruma.h $( $(BUILD_DIR)/regposix.obj: $(ONIG_DIR)/regposix.c $(posixheaders) $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h $(BUILD_DIR)/regposerr.obj: $(ONIG_DIR)/regposerr.c $(posixheaders) $(BUILD_DIR)/config.h $(BUILD_DIR)/st.obj: $(ONIG_DIR)/st.c $(ONIG_DIR)/regint.h $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/config.h $(ONIG_DIR)/st.h -$(BUILD_DIR)/onig_init.obj: $(ONIG_DIR)/onig_init.c $(ONIG_DIR)/oniguruma.h $(BUILD_DIR)/ascii.obj: $(ONIG_DIR)/ascii.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h $(BUILD_DIR)/unicode.obj: $(ONIG_DIR)/unicode.c $(ONIG_DIR)/unicode_fold_data.c $(ONIG_DIR)/unicode_property_data.c $(ONIG_DIR)/regenc.h $(BUILD_DIR)/config.h diff --git a/scintilla/oniguruma/src/onig_init.c b/scintilla/oniguruma/src/onig_init.c deleted file mode 100644 index c660e7df7..000000000 --- a/scintilla/oniguruma/src/onig_init.c +++ /dev/null @@ -1,45 +0,0 @@ -/********************************************************************** - onig_init.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2016-2019 K.Kosako - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * 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 THE AUTHOR AND CONTRIBUTORS ``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 THE AUTHOR 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 PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "regint.h" - -/* onig_init(): deprecated function */ -extern int -onig_init(void) -{ -#if 0 - OnigEncoding encs[] = { - ONIG_ENCODING_UTF8 - }; - - return onig_initialize(encs, sizeof(encs)/sizeof(encs[0])); -#else - return onig_initialize(0, 0); -#endif -} diff --git a/scintilla/oniguruma/src/oniguruma.h b/scintilla/oniguruma/src/oniguruma.h index 36fb25789..6d2af91a8 100644 --- a/scintilla/oniguruma/src/oniguruma.h +++ b/scintilla/oniguruma/src/oniguruma.h @@ -104,7 +104,6 @@ ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; #define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) #define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR -#define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag #define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3 @@ -781,7 +780,6 @@ typedef struct OnigMatchParamStruct OnigMatchParam; ONIG_EXTERN int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings)); -/* onig_init(): deprecated function. Use onig_initialize(). */ ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN @@ -798,8 +796,6 @@ ONIG_EXTERN int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax)); int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN -int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); -ONIG_EXTERN void onig_free P_((OnigRegex)); ONIG_EXTERN void onig_free_body P_((OnigRegex)); @@ -870,8 +866,6 @@ OnigEncoding onig_get_encoding P_((OnigRegex reg)); ONIG_EXTERN OnigOptionType onig_get_options P_((OnigRegex reg)); ONIG_EXTERN -OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg)); -ONIG_EXTERN OnigSyntaxType* onig_get_syntax P_((OnigRegex reg)); ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax)); @@ -898,10 +892,6 @@ int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePo ONIG_EXTERN void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); ONIG_EXTERN -OnigCaseFoldType onig_get_default_case_fold_flag P_((void)); -ONIG_EXTERN -int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag)); -ONIG_EXTERN unsigned int onig_get_match_stack_limit_size P_((void)); ONIG_EXTERN int onig_set_match_stack_limit_size P_((unsigned int size)); diff --git a/scintilla/oniguruma/src/regcomp.c b/scintilla/oniguruma/src/regcomp.c index 9fe74c791..3145bf3e0 100644 --- a/scintilla/oniguruma/src/regcomp.c +++ b/scintilla/oniguruma/src/regcomp.c @@ -45,87 +45,9 @@ typedef struct { int min_is_sure; } MinMaxCharLen; -OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; static OnigLen node_min_byte_len(Node* node, ParseEnv* env); -#if 0 -typedef struct { - int n; - int alloc; - int* v; -} int_stack; - -static int -make_int_stack(int_stack** rs, int init_size) -{ - int_stack* s; - int* v; - - *rs = 0; - - s = xmalloc(sizeof(*s)); - if (IS_NULL(s)) return ONIGERR_MEMORY; - - v = (int* )xmalloc(sizeof(int) * init_size); - if (IS_NULL(v)) { - xfree(s); - return ONIGERR_MEMORY; - } - - s->n = 0; - s->alloc = init_size; - s->v = v; - - *rs = s; - return ONIG_NORMAL; -} - -static void -free_int_stack(int_stack* s) -{ - if (IS_NOT_NULL(s)) { - if (IS_NOT_NULL(s->v)) - xfree(s->v); - xfree(s); - } -} - -static int -int_stack_push(int_stack* s, int v) -{ - if (s->n >= s->alloc) { - int new_size = s->alloc * 2; - int* nv = (int* )xrealloc(s->v, sizeof(int) * new_size); - if (IS_NULL(nv)) return ONIGERR_MEMORY; - - s->alloc = new_size; - s->v = nv; - } - - s->v[s->n] = v; - s->n++; - return ONIG_NORMAL; -} - -static int -int_stack_pop(int_stack* s) -{ - int v; - -#ifdef ONIG_DEBUG - if (s->n <= 0) { - fprintf(DBGFP, "int_stack_pop: fail empty. %p\n", s); - return 0; - } -#endif - - v = s->v[s->n]; - s->n--; - return v; -} -#endif - static int ops_init(regex_t* reg, int init_alloc_size) { @@ -388,19 +310,6 @@ ops_make_string_pool(regex_t* reg) return 0; } -extern OnigCaseFoldType -onig_get_default_case_fold_flag(void) -{ - return OnigDefaultCaseFoldFlag; -} - -extern int -onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) -{ - OnigDefaultCaseFoldFlag = case_fold_flag; - return 0; -} - static int len_multiply_cmp(OnigLen x, int y, OnigLen v) { @@ -7667,7 +7576,7 @@ onig_new_without_alloc(regex_t* reg, { int r; - r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); + r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_MIN, enc, syntax); if (r != 0) return r; r = onig_compile(reg, pattern, pattern_end, einfo); @@ -7684,7 +7593,7 @@ onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, *reg = (regex_t* )xmalloc(sizeof(regex_t)); if (IS_NULL(*reg)) return ONIGERR_MEMORY; - r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); + r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_MIN, enc, syntax); if (r != 0) { xfree(*reg); *reg = NULL; @@ -8130,7 +8039,7 @@ onig_detect_can_be_slow_pattern(const UChar* pattern, reg = (regex_t* )xmalloc(sizeof(regex_t)); if (IS_NULL(reg)) return ONIGERR_MEMORY; - r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); + r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_MIN, enc, syntax); if (r != 0) { xfree(reg); return r; @@ -8161,9 +8070,15 @@ onig_detect_can_be_slow_pattern(const UChar* pattern, r = detect_can_be_slow(root, &count, 0, calls); if (r == 0) { - int n = count.prec_read + count.look_behind - + count.backref + count.backref_with_level + count.call - + count.anychar_reluctant_many; + int n; + + n = count.prec_read + count.look_behind + + count.backref + count.backref_with_level + count.call + + count.anychar_reluctant_many; + + if (count.max_empty_check_nest_level > 2) + n += count.max_empty_check_nest_level - 2; + if (count.heavy_element != 0) n += count.heavy_element << 8; @@ -8177,6 +8092,7 @@ onig_detect_can_be_slow_pattern(const UChar* pattern, fprintf(DBGFP, " backref_with_level: %d\n", count.backref_with_level); fprintf(DBGFP, " call: %d\n", count.call); fprintf(DBGFP, " any_reluctant_many: %d\n", count.anychar_reluctant_many); + fprintf(DBGFP, " max_empty_check_nest_level: %d\n", count.max_empty_check_nest_level); fprintf(DBGFP, " heavy_element: %d\n", count.heavy_element); fprintf(DBGFP, " r: %d\n", r); fprintf(DBGFP, "\n"); diff --git a/scintilla/oniguruma/src/regexec.c b/scintilla/oniguruma/src/regexec.c index 8179fd52d..d0b1f4bf2 100644 --- a/scintilla/oniguruma/src/regexec.c +++ b/scintilla/oniguruma/src/regexec.c @@ -3060,6 +3060,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, if (n > msa->best_len) { msa->best_len = n; msa->best_s = (UChar* )sstart; + if (s >= in_right_range) { + best_len = msa->best_len; /* end of find */ + } } else { if (s >= in_right_range && msa->best_s == sstart) { @@ -5891,12 +5894,6 @@ onig_get_options(regex_t* reg) return reg->options; } -extern OnigCaseFoldType -onig_get_case_fold_flag(regex_t* reg) -{ - return reg->case_fold_flag; -} - extern OnigSyntaxType* onig_get_syntax(regex_t* reg) { diff --git a/scintilla/oniguruma/src/regext.c b/scintilla/oniguruma/src/regext.c deleted file mode 100644 index c46f630c5..000000000 --- a/scintilla/oniguruma/src/regext.c +++ /dev/null @@ -1,202 +0,0 @@ -/********************************************************************** - regext.c - Oniguruma (regular expression library) -**********************************************************************/ -/*- - * Copyright (c) 2002-2019 K.Kosako - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * 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 THE AUTHOR AND CONTRIBUTORS ``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 THE AUTHOR 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 PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include "regint.h" - -#if 0 -static void -conv_ext0be32(const UChar* s, const UChar* end, UChar* conv) -{ - while (s < end) { - *conv++ = '\0'; - *conv++ = '\0'; - *conv++ = '\0'; - *conv++ = *s++; - } -} - -static void -conv_ext0le32(const UChar* s, const UChar* end, UChar* conv) -{ - while (s < end) { - *conv++ = *s++; - *conv++ = '\0'; - *conv++ = '\0'; - *conv++ = '\0'; - } -} - -static void -conv_ext0be(const UChar* s, const UChar* end, UChar* conv) -{ - while (s < end) { - *conv++ = '\0'; - *conv++ = *s++; - } -} - -static void -conv_ext0le(const UChar* s, const UChar* end, UChar* conv) -{ - while (s < end) { - *conv++ = *s++; - *conv++ = '\0'; - } -} - -static void -conv_swap4bytes(const UChar* s, const UChar* end, UChar* conv) -{ - while (s < end) { - *conv++ = s[3]; - *conv++ = s[2]; - *conv++ = s[1]; - *conv++ = s[0]; - s += 4; - } -} - -static void -conv_swap2bytes(const UChar* s, const UChar* end, UChar* conv) -{ - while (s < end) { - *conv++ = s[1]; - *conv++ = s[0]; - s += 2; - } -} - -static int -conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* end, - UChar** conv, UChar** conv_end) -{ - int len = (int )(end - s); - - if (to == ONIG_ENCODING_UTF16_BE) { - if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { - *conv = (UChar* )xmalloc(len * 2); - CHECK_NULL_RETURN_MEMERR(*conv); - *conv_end = *conv + (len * 2); - conv_ext0be(s, end, *conv); - return 0; - } - else if (from == ONIG_ENCODING_UTF16_LE) { - swap16: - *conv = (UChar* )xmalloc(len); - CHECK_NULL_RETURN_MEMERR(*conv); - *conv_end = *conv + len; - conv_swap2bytes(s, end, *conv); - return 0; - } - } - else if (to == ONIG_ENCODING_UTF16_LE) { - if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { - *conv = (UChar* )xmalloc(len * 2); - CHECK_NULL_RETURN_MEMERR(*conv); - *conv_end = *conv + (len * 2); - conv_ext0le(s, end, *conv); - return 0; - } - else if (from == ONIG_ENCODING_UTF16_BE) { - goto swap16; - } - } - if (to == ONIG_ENCODING_UTF32_BE) { - if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { - *conv = (UChar* )xmalloc(len * 4); - CHECK_NULL_RETURN_MEMERR(*conv); - *conv_end = *conv + (len * 4); - conv_ext0be32(s, end, *conv); - return 0; - } - else if (from == ONIG_ENCODING_UTF32_LE) { - swap32: - *conv = (UChar* )xmalloc(len); - CHECK_NULL_RETURN_MEMERR(*conv); - *conv_end = *conv + len; - conv_swap4bytes(s, end, *conv); - return 0; - } - } - else if (to == ONIG_ENCODING_UTF32_LE) { - if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { - *conv = (UChar* )xmalloc(len * 4); - CHECK_NULL_RETURN_MEMERR(*conv); - *conv_end = *conv + (len * 4); - conv_ext0le32(s, end, *conv); - return 0; - } - else if (from == ONIG_ENCODING_UTF32_BE) { - goto swap32; - } - } - - return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION; -} -#endif - -extern int -onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, - OnigCompileInfo* ci, OnigErrorInfo* einfo) -{ - int r; - UChar *cpat, *cpat_end; - - if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL; - - if (ci->pattern_enc != ci->target_enc) { - return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION; - } - else { - cpat = (UChar* )pattern; - cpat_end = (UChar* )pattern_end; - } - - *reg = (regex_t* )xmalloc(sizeof(regex_t)); - if (IS_NULL(*reg)) { - r = ONIGERR_MEMORY; - goto err2; - } - - r = onig_reg_init(*reg, ci->option, ci->case_fold_flag, ci->target_enc, - ci->syntax); - if (r != 0) goto err; - - r = onig_compile(*reg, cpat, cpat_end, einfo); - if (r != 0) { - err: - onig_free(*reg); - *reg = NULL; - } - - err2: - if (cpat != pattern) xfree(cpat); - - return r; -} diff --git a/scintilla/oniguruma/src/reggnu.c b/scintilla/oniguruma/src/reggnu.c index 7825b745a..ceb557e80 100644 --- a/scintilla/oniguruma/src/reggnu.c +++ b/scintilla/oniguruma/src/reggnu.c @@ -103,7 +103,7 @@ re_alloc_pattern(regex_t** reg) if (IS_NULL(*reg)) return ONIGERR_MEMORY; return onig_reg_init(*reg, ONIG_OPTION_DEFAULT, - ONIGENC_CASE_FOLD_DEFAULT, + ONIGENC_CASE_FOLD_MIN, OnigEncDefaultCharEncoding, OnigDefaultSyntax); } diff --git a/scintilla/oniguruma/src/regparse.c b/scintilla/oniguruma/src/regparse.c index 7f6e07dd5..56e41e954 100644 --- a/scintilla/oniguruma/src/regparse.c +++ b/scintilla/oniguruma/src/regparse.c @@ -3535,9 +3535,10 @@ scan_number(UChar** src, const UChar* end, OnigEncoding enc) { int num, val; OnigCodePoint c; - UChar* p = *src; + UChar* p; PFETCH_READY; + p = *src; num = 0; while (! PEND) { PFETCH(c); @@ -3565,9 +3566,10 @@ scan_hexadecimal_number(UChar** src, UChar* end, int minlen, int maxlen, OnigCodePoint c; unsigned int val; int n; - UChar* p = *src; + UChar* p; PFETCH_READY; + p = *src; code = 0; n = 0; while (! PEND && n < maxlen) { @@ -3602,9 +3604,10 @@ scan_octal_number(UChar** src, UChar* end, int minlen, int maxlen, OnigCodePoint c; unsigned int val; int n; - UChar* p = *src; + UChar* p; PFETCH_READY; + p = *src; code = 0; n = 0; while (! PEND && n < maxlen) { @@ -3777,9 +3780,10 @@ get_next_code_point(UChar** src, UChar* end, int base, OnigEncoding enc, int in_ { int r; OnigCodePoint c; - UChar* p = *src; + UChar* p; PFETCH_READY; + p = *src; while (! PEND) { PFETCH(c); if (! IS_CODE_POINT_DIVIDE(c)) { @@ -4545,13 +4549,17 @@ ptoken_init(PToken* tok) static int fetch_interval(UChar** src, UChar* end, PToken* tok, ParseEnv* env) { - int low, up, syn_allow, non_low = 0; - int r = 0; + int low, up, syn_allow, non_low; + int r; OnigCodePoint c; - OnigEncoding enc = env->enc; - UChar* p = *src; + OnigEncoding enc; + UChar* p; PFETCH_READY; + p = *src; + r = 0; + non_low = 0; + enc = env->enc; syn_allow = IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INVALID_INTERVAL); if (PEND) { @@ -4769,13 +4777,16 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, int r, sign, exist_level; int digit_count; OnigCodePoint end_code; - OnigCodePoint c = 0; - OnigEncoding enc = env->enc; + OnigCodePoint c; + OnigEncoding enc; UChar *name_end; UChar *pnum_head; - UChar *p = *src; + UChar *p; PFETCH_READY; + p = *src; + c = 0; + enc = env->enc; *rback_num = 0; exist_level = 0; *num_type = IS_NOT_NUM; @@ -5132,12 +5143,15 @@ fetch_token_cc(PToken* tok, UChar** src, UChar* end, ParseEnv* env, int state) OnigCodePoint code; OnigCodePoint c, c2; int mindigits, maxdigits; - OnigSyntaxType* syn = env->syntax; - OnigEncoding enc = env->enc; + OnigSyntaxType* syn; + OnigEncoding enc; UChar* prev; - UChar* p = *src; + UChar* p; PFETCH_READY; + p = *src; + enc = env->enc; + syn = env->syntax; if (tok->code_point_continue != 0) { r = get_next_code_point(&p, end, tok->base_num, enc, TRUE, &code); if (r == 1) { @@ -5422,12 +5436,12 @@ fetch_token(PToken* tok, UChar** src, UChar* end, ParseEnv* env) OnigSyntaxType* syn; UChar* p; + PFETCH_READY; + enc = env->enc; syn = env->syntax; p = *src; - PFETCH_READY; - if (tok->code_point_continue != 0) { r = get_next_code_point(&p, end, tok->base_num, enc, FALSE, &code); if (r == 1) { @@ -7667,11 +7681,12 @@ prs_bag(Node** np, PToken* tok, int term, UChar** src, UChar* end, OnigOptionType option; OnigCodePoint c; int list_capture; - OnigEncoding enc = env->enc; - - UChar* p = *src; + OnigEncoding enc; + UChar* p; PFETCH_READY; + p = *src; + enc = env->enc; *np = NULL; if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; diff --git a/src/VersionEx.h b/src/VersionEx.h index c490f70f4..7ece41703 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -9,7 +9,7 @@ #define VERSION_MAJOR 5 #define VERSION_MINOR 21 #define VERSION_REV 702 -#define VERSION_BUILD 2 +#define VERSION_BUILD 3 #define SCINTILLA_VER 510 #define LEXILLA_VER 502 #define ONIGURUMA_REGEX_VER 7.0.0