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)); + } }