@@ -491,49 +491,28 @@ static void _build_trace_args(zval *arg, smart_str *str) /* {{{ */
491491 */
492492
493493 ZVAL_DEREF (arg );
494- switch (Z_TYPE_P (arg )) {
495- case IS_NULL :
496- smart_str_appends (str , "NULL, " );
497- break ;
498- case IS_STRING :
499- smart_str_appendc (str , '\'' );
500- smart_str_append_escaped (str , Z_STRVAL_P (arg ), MIN (Z_STRLEN_P (arg ), EG (exception_string_param_max_len )));
501- if (Z_STRLEN_P (arg ) > EG (exception_string_param_max_len )) {
502- smart_str_appends (str , "...', " );
503- } else {
504- smart_str_appends (str , "', " );
494+
495+ if (Z_TYPE_P (arg ) <= IS_STRING ) {
496+ smart_str_append_scalar (str , arg , EG (exception_string_param_max_len ));
497+ smart_str_appends (str , ", " );
498+ } else {
499+ switch (Z_TYPE_P (arg )) {
500+ case IS_RESOURCE :
501+ smart_str_appends (str , "Resource id #" );
502+ smart_str_append_long (str , Z_RES_HANDLE_P (arg ));
503+ smart_str_appends (str , ", " );
504+ break ;
505+ case IS_ARRAY :
506+ smart_str_appends (str , "Array, " );
507+ break ;
508+ case IS_OBJECT : {
509+ zend_string * class_name = Z_OBJ_HANDLER_P (arg , get_class_name )(Z_OBJ_P (arg ));
510+ smart_str_appends (str , "Object(" );
511+ smart_str_appends (str , ZSTR_VAL (class_name ));
512+ smart_str_appends (str , "), " );
513+ zend_string_release_ex (class_name , 0 );
514+ break ;
505515 }
506- break ;
507- case IS_FALSE :
508- smart_str_appends (str , "false, " );
509- break ;
510- case IS_TRUE :
511- smart_str_appends (str , "true, " );
512- break ;
513- case IS_RESOURCE :
514- smart_str_appends (str , "Resource id #" );
515- smart_str_append_long (str , Z_RES_HANDLE_P (arg ));
516- smart_str_appends (str , ", " );
517- break ;
518- case IS_LONG :
519- smart_str_append_long (str , Z_LVAL_P (arg ));
520- smart_str_appends (str , ", " );
521- break ;
522- case IS_DOUBLE :
523- smart_str_append_double (
524- str , Z_DVAL_P (arg ), (int ) EG (precision ), /* zero_fraction */ false);
525- smart_str_appends (str , ", " );
526- break ;
527- case IS_ARRAY :
528- smart_str_appends (str , "Array, " );
529- break ;
530- case IS_OBJECT : {
531- zend_string * class_name = Z_OBJ_HANDLER_P (arg , get_class_name )(Z_OBJ_P (arg ));
532- smart_str_appends (str , "Object(" );
533- smart_str_appends (str , ZSTR_VAL (class_name ));
534- smart_str_appends (str , "), " );
535- zend_string_release_ex (class_name , 0 );
536- break ;
537516 }
538517 }
539518}
0 commit comments