]> granicus.if.org Git - onig/commitdiff
add onig_initialize_encoding()
authorkosako <kosako@sofnec.co.jp>
Tue, 19 Apr 2016 06:41:05 +0000 (15:41 +0900)
committerkosako <kosako@sofnec.co.jp>
Tue, 19 Apr 2016 06:41:05 +0000 (15:41 +0900)
src/oniguruma.h
src/regcomp.c
src/regenc.c

index 4257d2d3f084a7f2048e4ecdc536df3e77a05267..5b8aeefdf98999280b81e2d407a2895adac78340 100644 (file)
@@ -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));
index c21e7ce441caeaebe32a6ad3ce4352da1beef479..0a3584b4c81208441bf424e4934a98c4dbfdb62a 100644 (file)
@@ -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;
 }
 
index 6c33d144f409655a91cff4397b04e94f308042fb..01bfd1d16588674d930f397b29b0d2f74d7460ca 100644 (file)
@@ -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)
 {