registrar: Use BStackOrHeapArray in MessageDeliverer for flattened messages.

Saves unnecessary allocations (and reallocations).
This commit is contained in:
Augustin Cavalier
2025-02-12 16:36:33 -05:00
parent 0f4bfb43ed
commit ff808e1b64
+8 -6
View File
@@ -10,10 +10,10 @@
#include <AutoDeleter.h>
#include <Autolock.h>
#include <DataIO.h>
#include <MessagePrivate.h>
#include <MessengerPrivate.h>
#include <OS.h>
#include <StackOrHeapArray.h>
#include <TokenSpace.h>
#include <util/DoublyLinkedList.h>
@@ -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<char, 4096> 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);
}