From 0aad5e4acfc26b0af1509a518253c62ba81a7f2e Mon Sep 17 00:00:00 2001 From: kosako Date: Tue, 5 Apr 2016 17:49:31 +0900 Subject: [PATCH] don't call onig_init() from onig_new() --- sample/encode.c | 4 ++++ sample/listcap.c | 3 +++ sample/names.c | 3 +++ sample/simple.c | 3 +++ sample/sql.c | 3 +++ sample/syntax.c | 4 +++- src/oniguruma.h | 4 ++++ src/regcomp.c | 3 --- src/reggnu.c | 2 ++ src/regposix.c | 2 ++ test/testc.c | 6 ++++++ test/testu.c | 4 ++++ 12 files changed, 37 insertions(+), 4 deletions(-) diff --git a/sample/encode.c b/sample/encode.c index 3fbd03d..e617a7d 100644 --- a/sample/encode.c +++ b/sample/encode.c @@ -52,6 +52,8 @@ exec(OnigEncoding enc, OnigOptionType options, UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; + onig_initialize(&enc, 1); + r = onig_new(®, pattern, pattern + onigenc_str_bytelen_null(enc, pattern), options, enc, ONIG_SYNTAX_DEFAULT, &einfo); @@ -92,6 +94,8 @@ exec_deluxe(OnigEncoding pattern_enc, OnigEncoding str_enc, UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; + onig_initialize(&str_enc, 1); + ci.num_of_elements = 5; ci.pattern_enc = pattern_enc; ci.target_enc = str_enc; diff --git a/sample/listcap.c b/sample/listcap.c index 9a4fd9a..e283890 100644 --- a/sample/listcap.c +++ b/sample/listcap.c @@ -93,6 +93,9 @@ extern int main(int argc, char* argv[]) static UChar* str3 = (UChar* )"0123"; static UChar* pattern3 = (UChar* )"(?@.)(?@.)(?@.)(?@.)"; + OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + /* enable capture hostory */ onig_copy_syntax(&syn, ONIG_SYNTAX_DEFAULT); onig_set_syntax_op2(&syn, diff --git a/sample/names.c b/sample/names.c index 6667eb5..2cf3a2f 100644 --- a/sample/names.c +++ b/sample/names.c @@ -35,6 +35,9 @@ extern int main(int argc, char* argv[]) static UChar* pattern = (UChar* )"(?a*)(?b*)(?c*)"; static UChar* str = (UChar* )"aaabbbbcc"; + OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { diff --git a/sample/simple.c b/sample/simple.c index 948a542..e570a30 100644 --- a/sample/simple.c +++ b/sample/simple.c @@ -16,6 +16,9 @@ extern int main(int argc, char* argv[]) static UChar* pattern = (UChar* )"a(.*)b|[e-f]+"; static UChar* str = (UChar* )"zzzzaffffffffb"; + OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { diff --git a/sample/sql.c b/sample/sql.c index e0ce62c..dfa176c 100644 --- a/sample/sql.c +++ b/sample/sql.c @@ -18,6 +18,9 @@ extern int main(int argc, char* argv[]) static UChar* pattern = (UChar* )"\\_%\\\\__zz"; static UChar* str = (UChar* )"a_abcabcabc\\ppzz"; + OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + onig_set_syntax_op (&SQLSyntax, ONIG_SYN_OP_VARIABLE_META_CHARACTERS); onig_set_syntax_op2 (&SQLSyntax, 0); onig_set_syntax_behavior(&SQLSyntax, 0); diff --git a/sample/syntax.c b/sample/syntax.c index 7cc353f..6bf27c5 100644 --- a/sample/syntax.c +++ b/sample/syntax.c @@ -51,7 +51,6 @@ extern int exec(OnigSyntaxType* syntax, onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); - onig_end(); return 0; } @@ -59,6 +58,9 @@ extern int main(int argc, char* argv[]) { int r; + OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + r = exec(ONIG_SYNTAX_PERL, "\\p{XDigit}\\P{XDigit}\\p{^XDigit}\\P{^XDigit}\\p{XDigit}", "bgh3a"); diff --git a/src/oniguruma.h b/src/oniguruma.h index 15b6578..90f3b7f 100644 --- a/src/oniguruma.h +++ b/src/oniguruma.h @@ -705,6 +705,10 @@ typedef struct { } OnigCompileInfo; /* Oniguruma Native API */ + +ONIG_EXTERN +int onig_initialize P_((OnigEncoding encodings[], int n)); +/* onig_init(): deprecated function. Use onig_initialize(). */ ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN diff --git a/src/regcomp.c b/src/regcomp.c index 4d97d03..a969ec0 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -5416,9 +5416,6 @@ onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax) { - if (! onig_inited) - onig_init(); - if (IS_NULL(reg)) return ONIGERR_INVALID_ARGUMENT; diff --git a/src/reggnu.c b/src/reggnu.c index 9b799ce..a6b62ab 100644 --- a/src/reggnu.c +++ b/src/reggnu.c @@ -140,5 +140,7 @@ re_mbcinit(int mb_code) break; } + onig_initialize(&enc, 1); + onigenc_set_default_encoding(enc); } diff --git a/src/regposix.c b/src/regposix.c index 7d1857c..de2ab45 100644 --- a/src/regposix.c +++ b/src/regposix.c @@ -257,6 +257,8 @@ reg_set_encoding(int mb_code) break; } + onig_initialize(&enc, 1); + onigenc_set_default_encoding(enc); } diff --git a/test/testc.c b/test/testc.c index 6a8c778..abb42b1 100644 --- a/test/testc.c +++ b/test/testc.c @@ -158,6 +158,12 @@ static void n(char* pattern, char* str) extern int main(int argc, char* argv[]) { +#ifndef POSIX_TEST + static OnigEncoding use_encs[] = { ONIG_ENCODING_EUC_JP }; + + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); +#endif + err_file = stdout; #ifdef POSIX_TEST diff --git a/test/testu.c b/test/testu.c index 5652988..dbd7f80 100644 --- a/test/testu.c +++ b/test/testu.c @@ -204,6 +204,10 @@ static void n(char* pattern, char* str) extern int main(int argc, char* argv[]) { + static OnigEncoding use_encs[] = { ONIG_ENCODING_UTF16_BE }; + + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + err_file = stdout; #ifndef POSIX_TEST -- 2.40.0