mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-13 16:46:47 +00:00
Shm: Fix SetUsedSize()
This commit is contained in:
parent
b442483dc3
commit
3fd33c87ba
|
@ -88,6 +88,11 @@ struct ShmHeader
|
|||
return HdrPtr(ptr)->refCount;
|
||||
}
|
||||
|
||||
static uint16_t UserOffset(char* ptr)
|
||||
{
|
||||
return HdrPartSize() + HdrPtr(ptr)->userOffset;
|
||||
}
|
||||
|
||||
static char* UserPtr(char* ptr)
|
||||
{
|
||||
// [HdrOffset(uint16_t)][Hdr alignment][Hdr][user buffer alignment][user buffer]
|
||||
|
|
|
@ -217,7 +217,9 @@ class Message final : public fair::mq::Message
|
|||
} else if (newSize <= fMeta.fSize) {
|
||||
try {
|
||||
try {
|
||||
char* ptr = fManager.ShrinkInPlace(newSize, fManager.GetAddressFromHandle(fMeta.fHandle, fMeta.fSegmentId), fMeta.fSegmentId);
|
||||
char* oldPtr = fManager.GetAddressFromHandle(fMeta.fHandle, fMeta.fSegmentId);
|
||||
uint16_t userOffset = ShmHeader::UserOffset(oldPtr);
|
||||
char* ptr = fManager.ShrinkInPlace(userOffset + newSize, oldPtr, fMeta.fSegmentId);
|
||||
fLocalPtr = ShmHeader::UserPtr(ptr);
|
||||
fMeta.fSize = newSize;
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue
Block a user