Ver Fonte

Kernel: Make InodeFile::create() API OOM safe

Brian Gianforcaro há 4 anos atrás
pai
commit
11bd2002bb
1 ficheiros alterados com 5 adições e 2 exclusões
  1. 5 2
      Kernel/FileSystem/InodeFile.h

+ 5 - 2
Kernel/FileSystem/InodeFile.h

@@ -14,9 +14,12 @@ class Inode;
 
 class InodeFile final : public File {
 public:
-    static NonnullRefPtr<InodeFile> create(NonnullRefPtr<Inode>&& inode)
+    static KResultOr<NonnullRefPtr<InodeFile>> create(NonnullRefPtr<Inode>&& inode)
     {
-        return adopt_ref(*new InodeFile(move(inode)));
+        auto file = adopt_ref_if_nonnull(new InodeFile(move(inode)));
+        if (!file)
+            return ENOMEM;
+        return file.release_nonnull();
     }
 
     virtual ~InodeFile() override;