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
  
  
  

Reply via email to