diff --git a/gc.c b/gc.c index 494da26..ecadfd8 100644 --- a/gc.c +++ b/gc.c @@ -1002,6 +1002,7 @@ static void _fprint_value(FILE *f, value_t v, seen_value_t *seen) else if (is_byte_string(v)) { byte_string_t *str = _get_byte_string(v); + size_t written = 0; fputc('"', f); @@ -1010,11 +1011,17 @@ static void _fprint_value(FILE *f, value_t v, seen_value_t *seen) int ch = str->bytes[i]; if (isprint(ch) && (ch != '\\') && (ch != '\"')) + { fputc(str->bytes[i], f); + ++written; + } else + { fprintf(f, "\\x%.2X", (int)str->bytes[i]); + written += 4; + } - if (i >= 20) + if (written >= 20) { fputs("...", f); break; diff --git a/interp.c b/interp.c index 03f9d2a..bc954a7 100644 --- a/interp.c +++ b/interp.c @@ -88,11 +88,13 @@ value_t run_interpreter(value_t lambda, value_t argv) */ #if 0 - fprint_value(stderr, state.lambda.value); fputc('\n', stderr); - fprint_value(stderr, state.argv.value); fputc('\n', stderr); - fprint_value(stderr, state.k.value); fputc('\n', stderr); - fprint_value(stderr, state.ctx.value); fputc('\n', stderr); + fflush(stdout); + fputs("LAMBDA: ", stderr); fprint_value(stderr, state.lambda.value); fputc('\n', stderr); + fputs("ARGLIST: ", stderr); fprint_value(stderr, state.argv.value); fputc('\n', stderr); + fputs("CONT'N: ", stderr); fprint_value(stderr, state.k.value); fputc('\n', stderr); + fputs("CONTEXT: ", stderr); fprint_value(stderr, state.ctx.value); fputc('\n', stderr); fputc('\n', stderr); + fflush(stderr); #endif if (is_builtin_fn(state.lambda.value))