diff --git a/src/files.c b/src/files.c
index 90d9ed7346cb5d99c485878e06b7a4d301478342..fbf81cfb671f5f9747a72060c7759e65ad0b01a7 100644
--- a/src/files.c
+++ b/src/files.c
@@ -456,14 +456,13 @@ bool open_buffer(const char *filename, bool undoable)
 	if (has_valid_path(realname)) {
 #ifndef NANO_TINY
 	    if (ISSET(LOCKING) && filename[0] != '\0') {
+		/* When not overriding an existing lock, discard the buffer. */
 		if (do_lockfile(realname) < 0) {
 #ifndef DISABLE_MULTIBUFFER
-		    if (openfile->next) {
-			close_buffer();
-			free(realname);
-			return FALSE;
-		    }
+		    close_buffer();
 #endif
+		    free(realname);
+		    return FALSE;
 		}
 	    }
 #endif /* !NANO_TINY */