diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-11-26 08:31:27 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-11-26 08:31:27 +0000 |
commit | 9ed1d63f41e67b1a2c50171ba9fc99a9b90e93c4 (patch) | |
tree | a55f5b8aff31a6765dd5c8514f523d420d3c12a1 /regcomp.c | |
parent | 360b98355e08c455d627c31c5f63bdda75fe8de2 (diff) |
* regcomp.c, regenc.c, regexec.c, regint.h, enc/unicode.c:
Merge Onigmo 58fa099ed1a34367de67fb3d06dd48d076839692
+ https://github.com/k-takata/Onigmo/pull/52
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'regcomp.c')
-rw-r--r-- | regcomp.c | 35 |
1 files changed, 34 insertions, 1 deletions
@@ -2,7 +2,7 @@ regcomp.c - Onigmo (Oniguruma-mod) (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> * Copyright (c) 2011-2014 K.Takata <kentkt AT csc DOT jp> * All rights reserved. * @@ -6023,11 +6023,44 @@ onig_init(void) } +static OnigEndCallListItemType* EndCallTop; + +extern void onig_add_end_call(void (*func)(void)) +{ + OnigEndCallListItemType* item; + + item = (OnigEndCallListItemType* )xmalloc(sizeof(*item)); + if (item == 0) return ; + + item->next = EndCallTop; + item->func = func; + + EndCallTop = item; +} + +static void +exec_end_call_list(void) +{ + OnigEndCallListItemType* prev; + void (*func)(void); + + while (EndCallTop != 0) { + func = EndCallTop->func; + (*func)(); + + prev = EndCallTop; + EndCallTop = EndCallTop->next; + xfree(prev); + } +} + extern int onig_end(void) { THREAD_ATOMIC_START; + exec_end_call_list(); + #ifdef ONIG_DEBUG_STATISTICS if (!onig_is_prelude()) onig_print_statistics(stderr); #endif |