From fddbc2311fa6ceeb123f8e0ab602bbc3b9f26da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sun, 12 Aug 2007 13:07:55 +0000 Subject: [PATCH] * fix attaching and reading empty regions git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21909 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/app/ServerLink.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/kits/app/ServerLink.cpp b/src/kits/app/ServerLink.cpp index 95f01e0de6..976edd0113 100644 --- a/src/kits/app/ServerLink.cpp +++ b/src/kits/app/ServerLink.cpp @@ -35,11 +35,15 @@ status_t ServerLink::ReadRegion(BRegion *region) { fReceiver->Read(®ion->fCount, sizeof(long)); - fReceiver->Read(®ion->fBounds, sizeof(clipping_rect)); - if (!region->_SetSize(region->fCount)) - return B_NO_MEMORY; - return fReceiver->Read(region->fData, - region->fCount * sizeof(clipping_rect)); + if (region->fCount > 0) { + fReceiver->Read(®ion->fBounds, sizeof(clipping_rect)); + if (!region->_SetSize(region->fCount)) + return B_NO_MEMORY; + return fReceiver->Read(region->fData, + region->fCount * sizeof(clipping_rect)); + } else { + return fReceiver->Read(®ion->fBounds, sizeof(clipping_rect)); + } } @@ -47,9 +51,13 @@ status_t ServerLink::AttachRegion(const BRegion ®ion) { fSender->Attach(®ion.fCount, sizeof(long)); - fSender->Attach(®ion.fBounds, sizeof(clipping_rect)); - return fSender->Attach(region.fData, - region.fCount * sizeof(clipping_rect)); + if (region.fCount > 0) { + fSender->Attach(®ion.fBounds, sizeof(clipping_rect)); + return fSender->Attach(region.fData, + region.fCount * sizeof(clipping_rect)); + } else { + return fSender->Attach(®ion.fBounds, sizeof(clipping_rect)); + } }