From: kosako Date: Tue, 19 Apr 2016 06:41:05 +0000 (+0900) Subject: add onig_initialize_encoding() X-Git-Tag: v6.0.0^2~30 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3abf01b00e02b454c2a257182d88493691596c38;p=onig add onig_initialize_encoding() --- diff --git a/src/oniguruma.h b/src/oniguruma.h index 4257d2d..5b8aeef 100644 --- a/src/oniguruma.h +++ b/src/oniguruma.h @@ -340,6 +340,8 @@ OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const ONIG_EXTERN int onigenc_init P_((void)); ONIG_EXTERN +int onig_initialize_encoding P_((OnigEncoding enc)); +ONIG_EXTERN int onigenc_set_default_encoding P_((OnigEncoding enc)); ONIG_EXTERN OnigEncoding onigenc_get_default_encoding P_((void)); diff --git a/src/regcomp.c b/src/regcomp.c index c21e7ce..0a3584b 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -5504,16 +5504,15 @@ onig_initialize(OnigEncoding encodings[], int n) onigenc_init(); + onig_inited = 1; + for (i = 0; i < n; i++) { OnigEncoding enc = encodings[i]; - if (enc->init != 0) { - r = (enc->init)(); - if (r != 0) - return r; - } + r = onig_initialize_encoding(enc); + if (r != 0) + return r; } - onig_inited = 1; return 0; } diff --git a/src/regenc.c b/src/regenc.c index 6c33d14..01bfd1d 100644 --- a/src/regenc.c +++ b/src/regenc.c @@ -37,6 +37,17 @@ onigenc_init(void) return 0; } +extern int +onig_initialize_encoding(OnigEncoding enc) +{ + if (enc->init != 0 && (enc->is_initialized() == 0)) { + int r = (enc->init)(); + return r; + } + + return 0; +} + extern OnigEncoding onigenc_get_default_encoding(void) {