From ff808e1b641585f32a3ba172143f7967e37337bc Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 12 Feb 2025 16:36:33 -0500 Subject: [PATCH] registrar: Use BStackOrHeapArray in MessageDeliverer for flattened messages. Saves unnecessary allocations (and reallocations). --- src/servers/registrar/MessageDeliverer.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/servers/registrar/MessageDeliverer.cpp b/src/servers/registrar/MessageDeliverer.cpp index ff409f5c08..4ba6737a5e 100644 --- a/src/servers/registrar/MessageDeliverer.cpp +++ b/src/servers/registrar/MessageDeliverer.cpp @@ -10,10 +10,10 @@ #include #include -#include #include #include #include +#include #include #include @@ -603,14 +603,16 @@ MessageDeliverer::DeliverMessage(BMessage *message, MessagingTargetSet &targets, if (message == NULL) return B_BAD_VALUE; - // flatten the message - BMallocIO mallocIO; - status_t error = message->Flatten(&mallocIO, NULL); + ssize_t size = message->FlattenedSize(); + BStackOrHeapArray buffer(size); + if (!buffer.IsValid()) + return B_NO_MEMORY; + + status_t error = message->Flatten(buffer, size); if (error < B_OK) return error; - return DeliverMessage(mallocIO.Buffer(), mallocIO.BufferLength(), targets, - timeout); + return DeliverMessage(buffer, size, targets, timeout); }