diff options
author | Anatol Belski <ab@php.net> | 2015-03-12 13:42:36 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-03-12 13:42:36 +0100 |
commit | 0e30c543ec8e6c371e0aef6e125e7b90f4b1b790 (patch) | |
tree | 380c6cbceb151dc5ad5284ff2ca2e582a71acd42 /ext/mbstring/oniguruma/enc/unicode.c | |
parent | ff337bf52bf8acf079224b98c6d935ae07fe07db (diff) | |
download | php-git-0e30c543ec8e6c371e0aef6e125e7b90f4b1b790.tar.gz |
upgrade to oniguruman 5.9.6
Diffstat (limited to 'ext/mbstring/oniguruma/enc/unicode.c')
-rw-r--r-- | ext/mbstring/oniguruma/enc/unicode.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/ext/mbstring/oniguruma/enc/unicode.c b/ext/mbstring/oniguruma/enc/unicode.c index 2b7225eed4..e13429f51e 100644 --- a/ext/mbstring/oniguruma/enc/unicode.c +++ b/ext/mbstring/oniguruma/enc/unicode.c @@ -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; @@ -10986,7 +11004,7 @@ onigenc_unicode_mbc_case_fold(OnigEncoding enc, if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) { if (to->n == 1) { - return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold); + return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold); } #if 0 /* NO NEEDS TO CHECK */ @@ -11094,7 +11112,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, for (j = 0; j < CaseUnfold_12[i].to.n; j++) { r = (*f)(CaseUnfold_12[i].to.code[j], (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg); - if (r != 0) return r; + if (r != 0) return r; for (k = 0; k < CaseUnfold_12[i].to.n; k++) { if (k == j) continue; @@ -11115,7 +11133,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) { r = (*f)(CaseUnfold_12_Locale[i].to.code[j], (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg); - if (r != 0) return r; + if (r != 0) return r; for (k = 0; k < CaseUnfold_12_Locale[i].to.n; k++) { if (k == j) continue; @@ -11136,7 +11154,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, for (j = 0; j < CaseUnfold_13[i].to.n; j++) { r = (*f)(CaseUnfold_13[i].to.code[j], (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg); - if (r != 0) return r; + if (r != 0) return r; for (k = 0; k < CaseUnfold_13[i].to.n; k++) { if (k == j) continue; |