pike.git / src / pike_types.c

version» Context lines:

pike.git/src/pike_types.c:2225:    my_strcat("program");    } else {    my_strcat("program(");    my_describe_type(t->car);    my_strcat(")");    }    break;    case T_OBJECT:    if (t->cdr)    { +  dynamic_buffer save_buf; +  ONERROR err;    struct svalue s;    if (t->car) {    my_strcat("object(is ");    } else {    my_strcat("object(implements ");    } -  if ((s.u.program = id_to_program(CDR_TO_INT(t)))) { +  /* We need to save the global buffer, in case id_to_program() +  * starts running Pike code. */ +  save_buffer(&save_buf); +  SET_ONERROR(err, restore_buffer, &save_buf); +  s.u.program = id_to_program(CDR_TO_INT(t)); +  CALL_AND_UNSET_ONERROR(err); +  if (s.u.program) {    s.type = T_PROGRAM;    s.subtype = 0;    describe_svalue(&s, 0, NULL);    my_strcat(")");    } else {    char buffer[100];    sprintf(buffer,"%"PRINTPTRDIFFT"d)",    CDR_TO_INT(t));    my_strcat(buffer);    }