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

Fix #61362: Exception::getTraceAsString and ::__toString scramble Unicode

The logic in smart_str_append_escaped() relies on unsigned values of c, so we
have to declare it as such.
This commit is contained in:
Christoph M. Becker
2015-06-17 16:56:04 +02:00
committed by Nikita Popov
parent 269acaa363
commit 653c869348
2 changed files with 24 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
--TEST--
Bug #61362 (Exception::getTraceAsString, Exception::__toString not able to handle unicode)
--FILE--
<?php
function test($arg){
throw new Exception();
}
try {
test('тест');
}
catch(Exception $e) {
echo $e->getTraceAsString(), "\n";
echo (string)$e;
}
?>
--EXPECTF--
#0 %s(%d): test('\xD1\x82\xD0\xB5\xD1\x81\xD1\x82')
#1 {main}
Exception in %s:%d
Stack trace:
#0 %s(%d): test('\xD1\x82\xD0\xB5\xD1\x81\xD1\x82')
#1 {main}
+1 -1
View File
@@ -427,7 +427,7 @@ static void smart_str_append_escaped(smart_str *str, const char *s, size_t l) {
str->s->len += len;
for (i = 0; i < l; ++i) {
char c = s[i];
unsigned char c = s[i];
if (c < 32 || c == '\\' || c > 126) {
*res++ = '\\';
switch (c) {