more places where display can be nil
diff --git a/src/libdraw/alloc.c b/src/libdraw/alloc.c
index 50b96fd..c1fbe5a 100644
--- a/src/libdraw/alloc.c
+++ b/src/libdraw/alloc.c
@@ -196,7 +196,7 @@
 	Display *d;
 	Image *w;
 
-	if(i == 0)
+	if(i == 0 || i->display == 0)
 		return 0;
 	/* make sure no refresh events occur on this if we block in the write */
 	d = i->display;
diff --git a/src/libdraw/buildfont.c b/src/libdraw/buildfont.c
index ba32e77..fa50b6e 100644
--- a/src/libdraw/buildfont.c
+++ b/src/libdraw/buildfont.c
@@ -129,7 +129,7 @@
 	}
 	for(i=0; i<f->nsubf; i++){
 		s = f->subf[i].f;
-		if(s && s!=display->defaultsubfont)
+		if(s && (!display || s!=display->defaultsubfont))
 			freesubfont(s);
 	}
 	freeimage(f->cacheimage);
diff --git a/src/libdraw/font.c b/src/libdraw/font.c
index 7aa649e..8370606 100644
--- a/src/libdraw/font.c
+++ b/src/libdraw/font.c
@@ -132,7 +132,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;