1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 06:27:45 +00:00

Kernel: Use StringView::for_each_split_view() in sys$pledge

This let's us avoid the fallible Vector allocation that split_view()
entails.
This commit is contained in:
Idan Horowitz 2022-02-14 01:48:18 +02:00 committed by Andreas Kling
parent e37e4a7980
commit bd821982e0

View file

@ -28,18 +28,18 @@ ErrorOr<FlatPtr> Process::sys$pledge(Userspace<const Syscall::SC_pledge_params*>
} }
auto parse_pledge = [&](auto pledge_spec, u32& mask) { auto parse_pledge = [&](auto pledge_spec, u32& mask) {
auto parts = pledge_spec.split_view(' '); auto found_invalid_pledge = true;
for (auto& part : parts) { pledge_spec.for_each_split_view(' ', false, [&mask, &found_invalid_pledge](auto const& part) {
#define __ENUMERATE_PLEDGE_PROMISE(x) \ #define __ENUMERATE_PLEDGE_PROMISE(x) \
if (part == StringView { #x }) { \ if (part == StringView { #x }) { \
mask |= (1u << (u32)Pledge::x); \ mask |= (1u << (u32)Pledge::x); \
continue; \ return; \
} }
ENUMERATE_PLEDGE_PROMISES ENUMERATE_PLEDGE_PROMISES
#undef __ENUMERATE_PLEDGE_PROMISE #undef __ENUMERATE_PLEDGE_PROMISE
return false; found_invalid_pledge = false;
} });
return true; return found_invalid_pledge;
}; };
u32 new_promises = 0; u32 new_promises = 0;