Branch: Tag:

2000-03-23

2000-03-23 20:05:09 by Martin Stjernholm <mast@lysator.liu.se>

More robustness against objects with broken _sprintf() when formatting
a backtrace.

Rev: lib/master.pike.in:1.104

1:   /* -*- Pike -*-    * -  * $Id: master.pike.in,v 1.103 2000/03/20 05:18:21 mast Exp $ +  * $Id: master.pike.in,v 1.104 2000/03/23 20:05:09 mast Exp $    *    * Master-file for Pike.    *
1273:   // FIXME   string stupid_describe(mixed m, int maxlen)   { -  switch(string typ=sprintf("%t",m)) +  string typ; +  if (catch (typ=sprintf("%t",m))) +  typ = "object"; // Object with a broken _sprintf(), probably. +  switch(typ)    {    case "int":    case "float":
1433:   {    string s;    if(!o) return 0; -  /* -  // This seems broken. Maybe objects should be programs here, but -  // that's essentially what the call to describe_program() below -  // does. /mast -  if(s=search(objects,object_program(o))) -  { -  if(sscanf(reverse(s),"%s.%s",string ext,string rest) && ext=="domp") -  return EXPLODE_PATH(reverse(rest))[-1]; -  return s; -  } -  */ +  if (!catch(s=sprintf("%O",o)) && stringp(s)) return s;    if(( s=describe_program(object_program(o)) ))    return s+"()";    return 0;
1576:    else    {    if (tmp) { -  row = sprintf("%O", tmp); +  if (catch (row = sprintf("%O", tmp))) +  row = describe_program(object_program(tmp)) + " with broken _sprintf()";    } else {    row = "Destructed object";    }