diff --git a/src/document/html/renderer.c b/src/document/html/renderer.c index a970e876..a8aec3a5 100644 --- a/src/document/html/renderer.c +++ b/src/document/html/renderer.c @@ -338,18 +338,19 @@ draw_blockquote_chars(struct part *part, int y, struct html_context *html_contex int x = par_format.orig_leftmargin; struct screen_char *const schar = get_format_screen_char(html_context, 0); - if (y >= part->box.height) { + if (LEN(y) + par_format.blockquote_level <= x) { return; } schar->data = '>'; for (i = 1; i < par_format.blockquote_level; i++) { copy_screen_chars(&POS(x, y), schar, 1); - if (part->char_width) part->char_width[x++] = 1; + if (part->char_width) part->char_width[x] = 1; + x++; } schar->data = ' '; copy_screen_chars(&POS(x, y), schar, 1); - if (part->char_width) part->char_width[x++] = 1; + if (part->char_width) part->char_width[x] = 1; } void diff --git a/test/blockquote_crash.html b/test/blockquote_crash.html new file mode 100644 index 00000000..8f24b0f0 --- /dev/null +++ b/test/blockquote_crash.html @@ -0,0 +1,16 @@ + + + + + +
+ +
MonoImageDownsampleThreshold1.5==== +
MonoImageDownsampleType/Subsample/Subsample/Subsample/Subsample/Subsample +
MonoImageFilter/CCITTFaxEncode==== +
Optimize(0,5)falsetruetruetruetrue +
+ + + +