summaryrefslogtreecommitdiff
path: root/sys/src/libdraw
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-05-25 04:36:16 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-05-25 04:36:16 +0200
commitcf657b418bcd4703ee8c7cce7ac07688a82b57cd (patch)
treedf9702d0c3c4f807c86748cb67a118207b299454 /sys/src/libdraw
parent96511b274de06c994597e45236730fee324fd15f (diff)
libdraw: fix agefont crash when display == nil (from sources / agefont-nodisplay patch)
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.
Diffstat (limited to 'sys/src/libdraw')
-rw-r--r--sys/src/libdraw/font.c2
1 files changed, 1 insertions, 1 deletions
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->age<SUBFAGE && s->cf->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;