diff --git a/Kernel/FileSystem/AnonymousFile.h b/Kernel/FileSystem/AnonymousFile.h index 470d5cdf4a..021611018b 100644 --- a/Kernel/FileSystem/AnonymousFile.h +++ b/Kernel/FileSystem/AnonymousFile.h @@ -12,9 +12,9 @@ namespace Kernel { class AnonymousFile final : public File { public: - static NonnullRefPtr create(NonnullRefPtr vmobject) + static RefPtr create(NonnullRefPtr vmobject) { - return adopt_ref(*new AnonymousFile(move(vmobject))); + return adopt_ref_if_nonnull(new AnonymousFile(move(vmobject))); } virtual ~AnonymousFile() override; diff --git a/Kernel/Syscalls/anon_create.cpp b/Kernel/Syscalls/anon_create.cpp index 28e5b5d0b7..cb30655806 100644 --- a/Kernel/Syscalls/anon_create.cpp +++ b/Kernel/Syscalls/anon_create.cpp @@ -30,6 +30,8 @@ KResultOr Process::sys$anon_create(size_t size, int options) return ENOMEM; auto anon_file = AnonymousFile::create(vmobject.release_nonnull()); + if (!anon_file) + return ENOMEM; auto description_or_error = FileDescription::create(*anon_file); if (description_or_error.is_error()) return description_or_error.error();