Browse Source

LibGUI: Use a ScopeGuard to close the fd in TextEditor::write_to_file()

Andreas Kling 4 years ago
parent
commit
a048f46be5
1 changed files with 2 additions and 3 deletions
  1. 2 3
      Userland/Libraries/LibGUI/TextEditor.cpp

+ 2 - 3
Userland/Libraries/LibGUI/TextEditor.cpp

@@ -1058,6 +1058,8 @@ bool TextEditor::write_to_file(const String& path)
         return false;
     }
 
+    ScopeGuard fd_guard = [fd] { close(fd); };
+
     // Compute the final file size and ftruncate() to make writing fast.
     // FIXME: Remove this once the kernel is smart enough to do this instead.
     off_t file_size = 0;
@@ -1078,7 +1080,6 @@ bool TextEditor::write_to_file(const String& path)
             ssize_t nwritten = write(fd, line_as_utf8.characters(), line_as_utf8.length());
             if (nwritten < 0) {
                 perror("write");
-                close(fd);
                 return false;
             }
         }
@@ -1087,13 +1088,11 @@ bool TextEditor::write_to_file(const String& path)
             ssize_t nwritten = write(fd, &ch, 1);
             if (nwritten != 1) {
                 perror("write");
-                close(fd);
                 return false;
             }
         }
     }
 
-    close(fd);
     return true;
 }