diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index 8351e87a09eff5fec10bdebada34b6c57595b2e9..2d8b636c2e40118a4f8582c3758041df3bab94e7 100644
--- a/src/conio/ciolib.c
+++ b/src/conio/ciolib.c
@@ -1032,22 +1032,24 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_puttext(int a,int b,int c,int d,void *e)
 
 	if(ciolib_xlat) {
 		font = ciolib_getfont();
-		buf=malloc((c-a+1)*(d-b+1)*2);
-		if (conio_fontdata[font].put_xlat == NULL) {
-			memcpy(buf, e, (c-a+1)*(d-b+1)*2);
-		}
-		else {
-			for (i=0; i<(c-a+1)*(d-b+1)*2; i+=2) {
-				if (((char *)e)[i] > 31 && ((char *)e)[i] < 127)
-					buf[i] = conio_fontdata[font].put_xlat[((char *)e)[i]-32];
-				else
-					buf[i] = ((char *)e)[i];
-				buf[i+1]=((char *)e)[i+1];
+		if (font >= 0) {
+			buf=malloc((c-a+1)*(d-b+1)*2);
+			if (conio_fontdata[font].put_xlat == NULL) {
+				memcpy(buf, e, (c-a+1)*(d-b+1)*2);
+			}
+			else {
+				for (i=0; i<(c-a+1)*(d-b+1)*2; i+=2) {
+					if (((char *)e)[i] > 31 && ((char *)e)[i] < 127)
+						buf[i] = conio_fontdata[font].put_xlat[((char *)e)[i]-32];
+					else
+						buf[i] = ((char *)e)[i];
+					buf[i+1]=((char *)e)[i+1];
+				}
 			}
 		}
 	}
 	ret = cio_api.puttext(a,b,c,d,(void *)buf);
-	if (ciolib_xlat)
+	if (buf != e)
 		free(buf);
 	return ret;
 }
@@ -1065,14 +1067,16 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_gettext(int a,int b,int c,int d,void *e)
 	ret = cio_api.gettext(a,b,c,d,e);
 	if(ciolib_xlat) {
 		font = ciolib_getfont();
-		if (conio_fontdata[font].put_xlat) {
-			for (i=0; i<(c-a+1)*(d-b+1)*2; i+=2) {
-				xlat = ((char *)e)[i];
-				if (xlat > 31 && xlat < 127) {
-					if ((ch = memchr(conio_fontdata[font].put_xlat, ((char *)e)[i], 128))!=NULL)
-						xlat = (char)(ch-conio_fontdata[font].put_xlat)+32;
+		if (font >= 0) {
+			if (conio_fontdata[font].put_xlat) {
+				for (i=0; i<(c-a+1)*(d-b+1)*2; i+=2) {
+					xlat = ((char *)e)[i];
+					if (xlat > 31 && xlat < 127) {
+						if ((ch = memchr(conio_fontdata[font].put_xlat, ((char *)e)[i], 128))!=NULL)
+							xlat = (char)(ch-conio_fontdata[font].put_xlat)+32;
+					}
+					((char *)e)[i] = xlat;
 				}
-				((char *)e)[i] = xlat;
 			}
 		}
 	}