diff options
author | Rui Hirokawa <hirokawa@php.net> | 2011-08-03 12:09:28 +0000 |
---|---|---|
committer | Rui Hirokawa <hirokawa@php.net> | 2011-08-03 12:09:28 +0000 |
commit | 99a49480622ccebf4fea3119369f8131bd82ceeb (patch) | |
tree | 3a5e8925d1601ce5427a46659d4184c2edbb88b0 | |
parent | 45867c1750609014d8ac9e1d5ea22841ef3a943e (diff) | |
download | php-git-99a49480622ccebf4fea3119369f8131bd82ceeb.tar.gz |
MF PHP_5_4.
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c | 23 | ||||
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h | 1 |
2 files changed, 21 insertions, 3 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c index 62cb186f9f..5653086647 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c @@ -139,7 +139,7 @@ const struct mbfl_convert_vtbl vtbl_wchar_sjis_docomo = { mbfl_filt_conv_common_ctor, mbfl_filt_conv_common_dtor, mbfl_filt_conv_wchar_sjis_mobile, - mbfl_filt_conv_common_flush + mbfl_filt_conv_sjis_mobile_flush }; const struct mbfl_convert_vtbl vtbl_sjis_kddi_wchar = { @@ -157,7 +157,7 @@ const struct mbfl_convert_vtbl vtbl_wchar_sjis_kddi = { mbfl_filt_conv_common_ctor, mbfl_filt_conv_common_dtor, mbfl_filt_conv_wchar_sjis_mobile, - mbfl_filt_conv_common_flush + mbfl_filt_conv_sjis_mobile_flush }; const struct mbfl_convert_vtbl vtbl_sjis_sb_wchar = { @@ -175,7 +175,7 @@ const struct mbfl_convert_vtbl vtbl_wchar_sjis_sb = { mbfl_filt_conv_common_ctor, mbfl_filt_conv_common_dtor, mbfl_filt_conv_wchar_sjis_mobile, - mbfl_filt_conv_common_flush + mbfl_filt_conv_sjis_mobile_flush }; const struct mbfl_convert_vtbl vtbl_sjis_docomo_pua_wchar = { @@ -1080,6 +1080,23 @@ mbfl_filt_conv_wchar_sjis_mobile(int c, mbfl_convert_filter *filter) return c; } +int +mbfl_filt_conv_sjis_mobile_flush(mbfl_convert_filter *filter) +{ + int c1 = filter->cache; + if (filter->status == 1 && (c1 == 0x0023 || (c1 >= 0x0030 && c1<=0x0039))) { + CK((*filter->output_function)(c1, filter->data)); + } + filter->status = 0; + filter->cache = 0; + + if (filter->flush_function != NULL) { + return (*filter->flush_function)(filter->data); + } + + return 0; +} + static int mbfl_filt_ident_sjis_mobile(int c, mbfl_identify_filter *filter) { if (filter->status) { /* kanji second char */ diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h index 405577ca89..bf504ff3b3 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.h @@ -60,5 +60,6 @@ extern const struct mbfl_convert_vtbl vtbl_wchar_sjis_sb_pua; int mbfl_filt_conv_sjis_mobile_wchar(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_wchar_sjis_mobile(int c, mbfl_convert_filter *filter); +int mbfl_filt_conv_sjis_mobile_flush(mbfl_convert_filter *filter); #endif /* MBFL_MBFILTER_SJIS_MOBILE_H */ |