diff --git a/src/conio/x_events.c b/src/conio/x_events.c
index 3c2bfe57a638ed9240c3ff551e495fdec7d391c1..34b6d067f444af54a8966d543029874cc8d46f9a 100644
--- a/src/conio/x_events.c
+++ b/src/conio/x_events.c
@@ -527,8 +527,6 @@ fullscreen_geometry(int *x_org, int *y_org, int *width, int *height)
 				x11.XRRFreeCrtcInfo(xrrci);
 			return true;
 		}
-		if (xrrci != NULL)
-			x11.XRRFreeCrtcInfo(xrrci);
 	}
 #endif
 #ifdef WITH_XINERAMA
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 575632068aa966fe46c6c4539cf404bf9ef9f165..529fcf09a1b343f17a0a77f18465fcae116bb11f 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -2369,8 +2369,10 @@ get_cache_fn_base(struct bbslist *bbs, char *fn, size_t fnsz)
 	backslash(fn);
 	strcat(fn, bbs->name);
 	backslash(fn);
-	if (!isdir(fn))
-		mkpath(fn);
+	if (!isdir(fn)) {
+		if (mkpath(fn))
+			return 0;
+	}
 	if (!isdir(fn))
 		return 0;
 	return 1;
@@ -3314,7 +3316,10 @@ apc_handler(char *strbuf, size_t slen, void *apcd)
 		p = strrchr(fn, '/');
 		if (p) {
 			*p = 0;
-			mkpath(fn);
+			if (mkpath(fn)) {
+				free(buf);
+				return;
+			}
 			*p = '/';
 		}
 		f = fopen(fn, "wb");