From 958886f038a807fc9ea72f670a12d89b9f5d657d Mon Sep 17 00:00:00 2001 From: Jani Taskinen Date: Sun, 10 May 2009 21:04:26 +0000 Subject: [PATCH] - Fixed bug #48200 (compile failure with mbstring.c when --enable-zend-multibyte is used) --- ext/mbstring/mbstring.c | 23 +++++++++++++---------- ext/mbstring/tests/zend_multibyte-01.phpt | 23 +++++++++++++++++++++++ ext/mbstring/tests/zend_multibyte-02.phpt | 18 ++++++++++++++++++ ext/mbstring/tests/zend_multibyte-03.phpt | 18 ++++++++++++++++++ ext/mbstring/tests/zend_multibyte-04.phpt | 18 ++++++++++++++++++ ext/mbstring/tests/zend_multibyte-05.phpt | 21 +++++++++++++++++++++ ext/mbstring/tests/zend_multibyte-06.phpt | 19 +++++++++++++++++++ ext/mbstring/tests/zend_multibyte-07.phpt | 19 +++++++++++++++++++ ext/mbstring/tests/zend_multibyte-08.phpt | 19 +++++++++++++++++++ ext/mbstring/tests/zend_multibyte-09.phpt | 22 ++++++++++++++++++++++ ext/mbstring/tests/zend_multibyte-10.phpt | 16 ++++++++++++++++ ext/mbstring/tests/zend_multibyte-11.phpt | 17 +++++++++++++++++ ext/mbstring/tests/zend_multibyte-12.phpt | 17 +++++++++++++++++ ext/mbstring/tests/zend_multibyte-13.phpt | 23 +++++++++++++++++++++++ ext/mbstring/tests/zend_multibyte-14.phpt | 23 +++++++++++++++++++++++ 15 files changed, 286 insertions(+), 10 deletions(-) create mode 100644 ext/mbstring/tests/zend_multibyte-01.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-02.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-03.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-04.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-05.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-06.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-07.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-08.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-09.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-10.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-11.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-12.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-13.phpt create mode 100644 ext/mbstring/tests/zend_multibyte-14.phpt diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index c73b9d8f93..f8ca92a920 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -94,8 +94,14 @@ /* {{{ prototypes */ ZEND_DECLARE_MODULE_GLOBALS(mbstring) + static PHP_GINIT_FUNCTION(mbstring); static PHP_GSHUTDOWN_FUNCTION(mbstring); + +static size_t php_mb_oddlen(const unsigned char *string, size_t length, const char *encoding TSRMLS_DC); +static int php_mb_encoding_converter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const char *encoding_to, const char *encoding_from TSRMLS_DC); +static char* php_mb_encoding_detector(const unsigned char *arg_string, size_t arg_length, char *arg_list TSRMLS_DC); +static int php_mb_set_zend_encoding(TSRMLS_D); /* }}} */ /* {{{ php_mb_default_identify_list */ @@ -866,7 +872,7 @@ static void _php_mb_free_regex(void *opaque); #if HAVE_ONIG /* {{{ _php_mb_compile_regex */ -void *_php_mb_compile_regex(const char *pattern TSRMLS_DC) +static void *_php_mb_compile_regex(const char *pattern TSRMLS_DC) { php_mb_regex_t *retval; OnigErrorInfo err_info; @@ -887,7 +893,7 @@ void *_php_mb_compile_regex(const char *pattern TSRMLS_DC) /* }}} */ /* {{{ _php_mb_match_regex */ -int _php_mb_match_regex(void *opaque, const char *str, size_t str_len) +static int _php_mb_match_regex(void *opaque, const char *str, size_t str_len) { return onig_search((php_mb_regex_t *)opaque, (const OnigUChar *)str, (const OnigUChar*)str + str_len, (const OnigUChar *)str, @@ -896,14 +902,14 @@ int _php_mb_match_regex(void *opaque, const char *str, size_t str_len) /* }}} */ /* {{{ _php_mb_free_regex */ -void _php_mb_free_regex(void *opaque) +static void _php_mb_free_regex(void *opaque) { onig_free((php_mb_regex_t *)opaque); } /* }}} */ #elif HAVE_PCRE || HAVE_BUNDLED_PCRE /* {{{ _php_mb_compile_regex */ -void *_php_mb_compile_regex(const char *pattern TSRMLS_DC) +static void *_php_mb_compile_regex(const char *pattern TSRMLS_DC) { pcre *retval; const char *err_str; @@ -918,7 +924,7 @@ void *_php_mb_compile_regex(const char *pattern TSRMLS_DC) /* }}} */ /* {{{ _php_mb_match_regex */ -int _php_mb_match_regex(void *opaque, const char *str, size_t str_len) +static int _php_mb_match_regex(void *opaque, const char *str, size_t str_len) { return pcre_exec((pcre *)opaque, NULL, str, (int)str_len, 0, 0, NULL, 0) >= 0; @@ -926,7 +932,7 @@ int _php_mb_match_regex(void *opaque, const char *str, size_t str_len) /* }}} */ /* {{{ _php_mb_free_regex */ -void _php_mb_free_regex(void *opaque) +static void _php_mb_free_regex(void *opaque) { pcre_free(opaque); } @@ -4714,7 +4720,6 @@ MBSTRING_API int php_mb_stripos(int mode, const char *old_haystack, unsigned int /* }}} */ #ifdef ZEND_MULTIBYTE - /* {{{ php_mb_set_zend_encoding() */ static int php_mb_set_zend_encoding(TSRMLS_D) { @@ -4806,9 +4811,7 @@ static char* php_mb_encoding_detector(const unsigned char *arg_string, size_t ar /* }}} */ /* {{{ int php_mb_encoding_converter() */ -static int php_mb_encoding_converter(unsigned char **to, size_t *to_length, - const unsigned char *from, size_t from_length, - const char *encoding_to, const char *encoding_from TSRMLS_DC) +static int php_mb_encoding_converter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const char *encoding_to, const char *encoding_from TSRMLS_DC) { mbfl_string string, result, *ret; enum mbfl_no_encoding from_encoding, to_encoding; diff --git a/ext/mbstring/tests/zend_multibyte-01.phpt b/ext/mbstring/tests/zend_multibyte-01.phpt new file mode 100644 index 0000000000..d96e0f07d3 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-01.phpt @@ -0,0 +1,23 @@ +--TEST-- +zend multibyte (1) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=Shift_JIS +mbstring.internal_encoding=Shift_JIS +--FILE-- + +--EXPECT-- +ƒhƒŒƒ~ƒtƒ@ƒ\ diff --git a/ext/mbstring/tests/zend_multibyte-02.phpt b/ext/mbstring/tests/zend_multibyte-02.phpt new file mode 100644 index 0000000000..c94dee5a28 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-02.phpt @@ -0,0 +1,18 @@ +--TEST-- +zend multibyte (2) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=CP932 +--FILE-- + +--EXPECT-- +string(12) "836583588367" diff --git a/ext/mbstring/tests/zend_multibyte-03.phpt b/ext/mbstring/tests/zend_multibyte-03.phpt new file mode 100644 index 0000000000..46a262c32e --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-03.phpt @@ -0,0 +1,18 @@ +--TEST-- +zend multibyte (3) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=EUC-JP +--FILE-- + +--EXPECT-- +string(12) "a5c6a5b9a5c8" diff --git a/ext/mbstring/tests/zend_multibyte-04.phpt b/ext/mbstring/tests/zend_multibyte-04.phpt new file mode 100644 index 0000000000..f1295b6afe --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-04.phpt @@ -0,0 +1,18 @@ +--TEST-- +zend multibyte (4) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=CP932 +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(18) "e38386e382b9e38388" diff --git a/ext/mbstring/tests/zend_multibyte-05.phpt b/ext/mbstring/tests/zend_multibyte-05.phpt new file mode 100644 index 0000000000..0a01c231fc --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-05.phpt @@ -0,0 +1,21 @@ +--TEST-- +zend multibyte (5) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=EUC-JP +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(16) "3f3f3fe9b4bb3f3f" diff --git a/ext/mbstring/tests/zend_multibyte-06.phpt b/ext/mbstring/tests/zend_multibyte-06.phpt new file mode 100644 index 0000000000..9acd6a951d --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-06.phpt @@ -0,0 +1,19 @@ +--TEST-- +zend multibyte (6) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=EUC-JP +mbstring.internal_encoding=CP932 +--FILE-- + +--EXPECT-- +string(12) "836583588367" diff --git a/ext/mbstring/tests/zend_multibyte-07.phpt b/ext/mbstring/tests/zend_multibyte-07.phpt new file mode 100644 index 0000000000..30305f5fdf --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-07.phpt @@ -0,0 +1,19 @@ +--TEST-- +zend multibyte (7) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=ISO-8859-1 +mbstring.internal_encoding=EUC-JP +--FILE-- + +--EXPECT-- +string(12) "a5c6a5b9a5c8" diff --git a/ext/mbstring/tests/zend_multibyte-08.phpt b/ext/mbstring/tests/zend_multibyte-08.phpt new file mode 100644 index 0000000000..ab27461355 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-08.phpt @@ -0,0 +1,19 @@ +--TEST-- +zend multibyte (8) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=ISO-8859-1 +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(18) "e38386e382b9e38388" diff --git a/ext/mbstring/tests/zend_multibyte-09.phpt b/ext/mbstring/tests/zend_multibyte-09.phpt new file mode 100644 index 0000000000..79ee435aa0 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-09.phpt @@ -0,0 +1,22 @@ +--TEST-- +zend multibyte (9) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=cp1251 +mbstring.internal_encoding=UTF-8 +--FILE-- + +--EXPECT-- +string(16) "3f3f3fe9b4bb3f3f" diff --git a/ext/mbstring/tests/zend_multibyte-10.phpt b/ext/mbstring/tests/zend_multibyte-10.phpt new file mode 100644 index 0000000000..c3543c937a --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-10.phpt @@ -0,0 +1,16 @@ +--TEST-- +zend multibyte (10) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Encoding declaration pragma must be the very first statement in the script in %s on line 3 diff --git a/ext/mbstring/tests/zend_multibyte-11.phpt b/ext/mbstring/tests/zend_multibyte-11.phpt new file mode 100644 index 0000000000..84e16ae467 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-11.phpt @@ -0,0 +1,17 @@ +--TEST-- +zend multibyte (11) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Encoding declaration pragma must be the very first statement in the script in %s on line 3 diff --git a/ext/mbstring/tests/zend_multibyte-12.phpt b/ext/mbstring/tests/zend_multibyte-12.phpt new file mode 100644 index 0000000000..e1c8ce52d1 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-12.phpt @@ -0,0 +1,17 @@ +--TEST-- +zend multibyte (12) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal error: Encoding declaration pragma must be the very first statement in the script in %s on line 4 diff --git a/ext/mbstring/tests/zend_multibyte-13.phpt b/ext/mbstring/tests/zend_multibyte-13.phpt new file mode 100644 index 0000000000..e601a6ceed --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-13.phpt @@ -0,0 +1,23 @@ +--TEST-- +zend multibyte (13) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=ISO-8859-1 +--FILE-- + +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=UTF-8 +--FILE-- +