diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index dc20a334cd513c4ad51201baa4b7495f203fa04f..f1b26382e5430aeaa0ae2d97bfc0c8947f38bcef 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2785,7 +2785,7 @@ void event_thread(void* arg)
 						sbbs->online=FALSE;
 					}
 				}
-				close(userfile);
+				closeuserdat(userfile);
 				lastprepack=(time32_t)now;
 				SAFEPRINTF(str,"%stime.dab",sbbs->cfg.ctrl_dir);
 				if((file=sbbs->nopen(str,O_WRONLY))==-1) {
@@ -4824,7 +4824,7 @@ void sbbs_t::daily_maint(void)
 			putuserrec(&cfg,user.number,U_MISC,8,ultoa(user.misc|DELETED,str,16));
 		}
 	}
-	close(userfile);
+	closeuserdat(userfile);
 
 	lputs(LOG_INFO,"DAILY: Purging deleted/expired e-mail");
 	SAFEPRINTF(smb.file,"%smail",cfg.data_dir);
diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 3200e3f67f01335e57f3609cbc9e46088d1a7f09..6607442ebfc2450f19716e9a4dcb02bfc543bf40 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -111,7 +111,7 @@ void sbbs_t::userlist(long mode)
 		}
 		j++; 
 	}
-	close(userfile);
+	closeuserdat(userfile);
 	if(i<=k) {	/* aborted */
 		if(sort)
 			for(i=0;i<j;i++)
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 5b035417cdf73a7203f5d8d8aee6db68a5a8fdb3..c1c7837d6ba87ffac284e705922f4446cb11ffe0 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -207,6 +207,8 @@ int openuserdat(scfg_t* cfg, BOOL for_modify)
 
 int closeuserdat(int file)
 {
+	if(file < 1)
+		return -1;
 	return close(file);
 }