1
0
mirror of https://github.com/php/php-src.git synced 2026-04-24 00:18:23 +02:00

- SCNG(input_filter) can be null if the script encoding is idential to

the internal encoding.
This commit is contained in:
Moriyoshi Koizumi
2008-07-28 07:01:54 +00:00
parent cc8145d14f
commit b9eaa80150
2 changed files with 38 additions and 15 deletions
+16 -15
View File
@@ -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;
+22
View File
@@ -0,0 +1,22 @@
--TEST--
zend multibyte (13)
--SKIPIF--
<?php
ini_set("mbstring.script_encoding", "SJIS");
ini_set("mbstring.script_encoding", "***") != "SJIS" and
die("skip zend-multibyte is not available");
?>
--INI--
mbstring.script_encoding=UTF-8
mbstring.internal_encoding=UTF-8
--FILE--
<?php
var_dump(substr(file_get_contents(__FILE__), __COMPILER_HALT_OFFSET__));
var_dump(bin2hex("äëüáéú"));
__halt_compiler();test
test
--EXPECT--
string(10) "test
test
"
string(24) "c3a4c3abc3bcc3a1c3a9c3ba"