From cf657b418bcd4703ee8c7cce7ac07688a82b57cd Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 25 May 2013 04:36:16 +0200 Subject: libdraw: fix agefont crash when display == nil (from sources / agefont-nodisplay patch) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If you run this: {for (i in `{seq 1 70000}) echo '½•α·'} | mc | wc mc will eventually suicide. The error comes from /sys/src/libdraw/font.c:/^agefont which assumes it has a display. Normally, this is set up by geninitdraw (usually via initdraw), but mc.c avoids that to avoid the screen redraws (flicker, at a minimum, but worse in long-running cases). graphics(2) does not prohibit this use, so I made the least intrusive change to make it work. --- sys/src/libdraw/font.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/src/libdraw/font.c b/sys/src/libdraw/font.c index cac00e1d1..5cda3f25d 100644 --- a/sys/src/libdraw/font.c +++ b/sys/src/libdraw/font.c @@ -129,7 +129,7 @@ agefont(Font *f) if(s->age){ if(s->agecf->name != nil){ /* clean up */ - if(s->f != display->defaultsubfont) + if(display == nil || s->f != display->defaultsubfont) freesubfont(s->f); s->cf = nil; s->f = nil; -- cgit v1.2.3