cvsuser 04/03/09 08:32:36
Modified: src trace.c
Log:
trace output changed - escape PMC strings
Revision Changes Path
1.49 +14 -3 parrot/src/trace.c
Index: trace.c
===================================================================
RCS file: /cvs/public/parrot/src/trace.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -w -r1.48 -r1.49
--- trace.c 9 Mar 2004 15:21:09 -0000 1.48
+++ trace.c 9 Mar 2004 16:32:36 -0000 1.49
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: trace.c,v 1.48 2004/03/09 15:21:09 leo Exp $
+$Id: trace.c,v 1.49 2004/03/09 16:32:36 leo Exp $
=head1 NAME
@@ -39,11 +39,22 @@
void
trace_pmc_dump(struct Parrot_Interp *interpreter, PMC* pmc)
{
+ char *escaped;
if (pmc && pmc != PMCNULL) {
if(pmc->vtable) {
if (pmc->vtable->base_type == enum_class_PerlString) {
- PIO_eprintf(interpreter, "%S=PMC(%#p Str:\"%Ps\")",
- VTABLE_name(interpreter, pmc), pmc, pmc);
+ STRING *s = VTABLE_get_string(interpreter, pmc);
+ if (!s)
+ PIO_eprintf(interpreter, "%S=PMC(%#p Str:(NULL))",
+ VTABLE_name(interpreter, pmc), pmc);
+ else {
+ escaped = PDB_escape(s->bufstart, s->strlen);
+ PIO_eprintf(interpreter, "%S=PMC(%#p Str:\"%s\")",
+ VTABLE_name(interpreter, pmc), pmc,
+ escaped ? escaped : "(null)");
+ if (escaped)
+ mem_sys_free(escaped);
+ }
}
else if (pmc->vtable->base_type == enum_class_PerlUndef
|| pmc->vtable->base_type == enum_class_PerlInt