diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index d74485b93ad3e78700373b2cdbb32b73a97d7695..b468232a7c6844a0c8bdbb6a295a73c238728e85 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -489,8 +489,7 @@ int is_user_online(scfg_t* cfg, uint usernumber)
 			|| node.status==NODE_LOGON) && node.useron==usernumber)
 			return i;
 	}
-	if(file >= 0)
-		close(file);
+	CLOSE_OPEN_FILE(file);
 	return 0;
 }
 
@@ -846,7 +845,8 @@ int putnodedat(scfg_t* cfg, uint number, node_t* node, BOOL closeit, int file)
 		return -1;
 	if(!VALID_CFG(cfg)
 		|| node==NULL || number<1 || number>cfg->sys_nodes) {
-		close(file);
+		if(closeit)
+			close(file);
 		return(-1);
 	}