summaryrefslogtreecommitdiff
path: root/ext/mbstring/oniguruma/enc/unicode.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-03-12 13:42:36 +0100
committerAnatol Belski <ab@php.net>2015-03-12 13:42:36 +0100
commit0e30c543ec8e6c371e0aef6e125e7b90f4b1b790 (patch)
tree380c6cbceb151dc5ad5284ff2ca2e582a71acd42 /ext/mbstring/oniguruma/enc/unicode.c
parentff337bf52bf8acf079224b98c6d935ae07fe07db (diff)
downloadphp-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.c28
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;