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.
This commit is contained in:
parent
96511b274d
commit
cf657b418b
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue