From 749a772b9734d6d02a2b36ad32dd04806cb90d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 5 Jul 2005 00:03:18 +0000 Subject: [PATCH] Accidently broke BMessage::_SendFlattenedMessage() with the last commit; the magic is not part of the header anymore when read from a stream (because BDataIO does not support seeking, and we need to know the magic before actually reading the header). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13429 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/app/Message.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp index 055577ebb4..879cf8e488 100644 --- a/src/kits/app/Message.cpp +++ b/src/kits/app/Message.cpp @@ -2030,17 +2030,23 @@ BMessage::_SendFlattenedMessage(void *data, int32 size, port_id port, if (!data) return B_BAD_VALUE; + uint32 magic = *(uint32*)data; + // prepare flattened fields if (((KMessage::Header*)data)->magic == KMessage::kMessageHeaderMagic) { // a KMessage KMessage::Header *header = (KMessage::Header*)data; header->targetToken = (preferred ? B_PREFERRED_TOKEN : token); - } else if (*(uint32*)data == kMessageMagic - || *(uint32*)data == kMessageMagicSwapped) { - // get the header - BMemoryIO stream(data, size); + } else if (magic == kMessageMagic || magic == kMessageMagicSwapped) { + // get the header (but not the magic again) + BMemoryIO stream((uint32 *)data + 1, size - sizeof(uint32)); + Header header; - status_t error = header.ReadFrom(stream); + status_t error = header.SetMagic(magic); + if (error != B_OK) + return error; + + error = header.ReadFrom(stream); if (error != B_OK) return error;