shithub: riscv

Download patch

ref: cf657b418bcd4703ee8c7cce7ac07688a82b57cd
parent: 96511b274de06c994597e45236730fee324fd15f
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat May 25 00:36:16 EDT 2013

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.

--- a/sys/src/libdraw/font.c
+++ b/sys/src/libdraw/font.c
@@ -129,7 +129,7 @@
 			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;
--