printer: fix the recently optimized printing routines

Overflows of the string buffer were not correctly handled.
This commit is contained in:
Marius Gerbershagen 2018-05-23 22:13:15 +02:00
parent 5f621c6e96
commit 2c135e798b
3 changed files with 3 additions and 3 deletions

View file

@ -4741,7 +4741,7 @@ writestr_stream(const char *s, cl_object strm)
if (i >= size) {
si_fill_pointer_set(buffer, ecl_make_fixnum(size));
cl_write_string(2, buffer, strm);
si_fill_pointer_set(buffer, ecl_make_fixnum(0));
i = 0;
}
}
si_fill_pointer_set(buffer, ecl_make_fixnum(i));

View file

@ -44,7 +44,7 @@ _ecl_write_addr(void *x, cl_object stream)
if (buffer_ndx >= buffer_size) {
si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_size));
cl_write_string(2, buffer, stream);
si_fill_pointer_set(buffer, ecl_make_fixnum(0));
buffer_ndx = 0;
}
}
}

View file

@ -107,7 +107,7 @@ needs_to_be_escaped(cl_object s, cl_object readtable, cl_object print_case)
if (buffer_ndx >= buffer_size) { \
si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_size)); \
cl_write_string(2, buffer, stream); \
si_fill_pointer_set(buffer, ecl_make_fixnum(0)); \
buffer_ndx = 0; \
}
static void