]> granicus.if.org Git - onig/commitdiff
add onigenc_end_unicode() and entry into end-call-list.
authorK.Kosako <sndgk393@ybb.ne.jp>
Wed, 27 Nov 2013 02:21:57 +0000 (11:21 +0900)
committerK.Kosako <sndgk393@ybb.ne.jp>
Wed, 27 Nov 2013 02:21:57 +0000 (11:21 +0900)
enc/unicode.c

index af7a86e088203c2628b13eb2edf8b5484c6b69ff..e13429f51e9c4f2075dbed0bdd25d5febaab6c31 100644 (file)
@@ -2,7 +2,7 @@
   unicode.c -  Oniguruma (regular expression library)
 **********************************************************************/
 /*-
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2013  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10891,6 +10891,21 @@ static st_table* Unfold2Table;
 static st_table* Unfold3Table;
 static int CaseFoldInited = 0;
 
+
+extern void onigenc_end_unicode(void)
+{
+  THREAD_ATOMIC_START;
+
+  if (FoldTable    != 0) st_free_table(FoldTable);
+  if (Unfold1Table != 0) st_free_table(Unfold1Table);
+  if (Unfold2Table != 0) st_free_table(Unfold2Table);
+  if (Unfold3Table != 0) st_free_table(Unfold3Table);
+
+  CaseFoldInited = 0;
+
+  THREAD_ATOMIC_END;
+}
+
 static int init_case_fold_table(void)
 {
   const CaseFold_11_Type   *p;
@@ -10952,6 +10967,9 @@ static int init_case_fold_table(void)
     st_add_direct(Unfold3Table, (st_data_t )p3->from, (st_data_t )(&p3->to));
   }
 
+
+  onig_add_end_call(onigenc_end_unicode);
+
   CaseFoldInited = 1;
   THREAD_ATOMIC_END;
   return 0;