From: Moriyoshi Koizumi Date: Mon, 28 Jul 2008 07:01:54 +0000 (+0000) Subject: - SCNG(input_filter) can be null if the script encoding is idential to X-Git-Tag: php-5.3.0alpha1~79 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b9eaa80150bc46c021f0fcaae7a347d7521ade4c;p=php - SCNG(input_filter) can be null if the script encoding is idential to the internal encoding. --- diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 5a0ca023f7..11449ad411 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -448,20 +448,21 @@ ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D) { size_t offset = SCNG(yy_cursor) - SCNG(yy_start); #ifdef ZEND_MULTIBYTE - size_t original_offset = offset, length = 0; - do { - unsigned char *p = NULL; - SCNG(input_filter)(&p, &length, SCNG(script_org), offset TSRMLS_CC); - if (!p) { - break; - } - efree(p); - if (length > original_offset) { - offset--; - } else if (length < original_offset) { - offset++; - } - } while (original_offset != length); + if (SCNG(input_filter)) { + size_t original_offset = offset, length = 0; do { + unsigned char *p = NULL; + SCNG(input_filter)(&p, &length, SCNG(script_org), offset TSRMLS_CC); + if (!p) { + break; + } + efree(p); + if (length > original_offset) { + offset--; + } else if (length < original_offset) { + offset++; + } + } while (original_offset != length); + } #endif return offset; } @@ -607,7 +608,7 @@ ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter zend_encoding *new_encoding = SCNG(script_encoding); zend_encoding_filter new_filter = SCNG(input_filter); SCNG(script_encoding) = old_encoding; - SCNG(input_filter) = new_filter; + SCNG(input_filter) = old_input_filter; offset = zend_get_scanned_file_offset(TSRMLS_C); SCNG(script_encoding) = new_encoding; SCNG(input_filter) = new_filter; diff --git a/ext/mbstring/tests/zend_multibyte-14.phpt b/ext/mbstring/tests/zend_multibyte-14.phpt new file mode 100644 index 0000000000..dc968d78b0 --- /dev/null +++ b/ext/mbstring/tests/zend_multibyte-14.phpt @@ -0,0 +1,22 @@ +--TEST-- +zend multibyte (13) +--SKIPIF-- + +--INI-- +mbstring.script_encoding=UTF-8 +mbstring.internal_encoding=UTF-8 +--FILE-- +