Edit report at https://bugs.php.net/bug.php?id=61362&edit=1

 ID:                 61362
 Updated by:         tony2...@php.net
 Reported by:        sam at rmcreative dot ru
 Summary:            Exception::getTraceAsString, Exception::__toString
                     not able to handle unicode
-Status:             Open
+Status:             Assigned
 Type:               Bug
 Package:            Unicode Engine related
 Operating System:   All
 PHP Version:        5.4.0
-Assigned To:        
+Assigned To:        johannes
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2012-03-14 17:20:50] tony2...@php.net

The problem is here: 
http://lxr.php.net/opengrok/xref/PHP_5_4/Zend/zend_exceptions.c#391
Dunno what to do in this case: either add to the docs that the result of 
getTraceAsString() is perfectly safe from binary symbols or drop that code 
completely and allow any chars there.

------------------------------------------------------------------------
[2012-03-14 15:16:42] sam at rmcreative dot ru

It's UTF8 already.

------------------------------------------------------------------------
[2012-03-14 15:14:58] tony2...@php.net

Nevermind, I see the problem.

------------------------------------------------------------------------
[2012-03-14 12:20:41] tony2...@php.net

What if you try to switch your browser encoding to UTF8 from whatever it is by 
default?

------------------------------------------------------------------------
[2012-03-12 15:44:18] sam at rmcreative dot ru

Description:
------------
Exception::getTraceAsString, Exception::__toString are not able to properly 
handle unicode in stack trace. Instead of showing actual argument values it's 
giving ???? in case value is unicode.

Tested on PHP 5.3 and PHP 5.4.

Test script:
---------------
<?php
function test($arg){
        throw new Exception();
}

try {
        test('тест');
}
catch(Exception $e) {
        echo $e->getTraceAsString();
        echo (string)$e;
}

Expected result:
----------------
d:\web\usr\local\php54>php.exe d:\src\exception_wrong_trace\test.php
#0 D:\src\exception_wrong_trace\test.php(7): test('тест')
#1 {main}exception 'Exception' in D:\src\exception_wrong_trace\test.php:3
Stack trace:
#0 D:\src\exception_wrong_trace\test.php(7): test('тест')
#1 {main}

Actual result:
--------------
d:\web\usr\local\php54>php.exe d:\src\exception_wrong_trace\test.php
#0 D:\src\exception_wrong_trace\test.php(7): test('????')
#1 {main}exception 'Exception' in D:\src\exception_wrong_trace\test.php:3
Stack trace:
#0 D:\src\exception_wrong_trace\test.php(7): test('????')
#1 {main}


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61362&edit=1

Reply via email to