diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp
index 6f21110da2d217ed743ba881b8831b085cc3634c..59513f013efd9f061d57cd6babc68e334eae6b16 100644
--- a/src/sbbs3/writemsg.cpp
+++ b/src/sbbs3/writemsg.cpp
@@ -673,6 +673,7 @@ bool sbbs_t::writemsg(const char *fname, const char *top, char *subj, int mode,
 		}
 		length=(long)filelength(file);
 		if(length < 0) {
+			close(file);
 			errormsg(WHERE, ERR_LEN, msgtmp, length);
 			free(buf);
 			return false;