From bd821982e0161752e6d3d8fbc4ccd485e5ed5b61 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Mon, 14 Feb 2022 01:48:18 +0200 Subject: [PATCH] Kernel: Use StringView::for_each_split_view() in sys$pledge This let's us avoid the fallible Vector allocation that split_view() entails. --- Kernel/Syscalls/pledge.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Kernel/Syscalls/pledge.cpp b/Kernel/Syscalls/pledge.cpp index 47457205e3..2ed72afb80 100644 --- a/Kernel/Syscalls/pledge.cpp +++ b/Kernel/Syscalls/pledge.cpp @@ -28,18 +28,18 @@ ErrorOr Process::sys$pledge(Userspace } auto parse_pledge = [&](auto pledge_spec, u32& mask) { - auto parts = pledge_spec.split_view(' '); - for (auto& part : parts) { + auto found_invalid_pledge = true; + pledge_spec.for_each_split_view(' ', false, [&mask, &found_invalid_pledge](auto const& part) { #define __ENUMERATE_PLEDGE_PROMISE(x) \ if (part == StringView { #x }) { \ mask |= (1u << (u32)Pledge::x); \ - continue; \ + return; \ } ENUMERATE_PLEDGE_PROMISES #undef __ENUMERATE_PLEDGE_PROMISE - return false; - } - return true; + found_invalid_pledge = false; + }); + return found_invalid_pledge; }; u32 new_promises = 0;