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
e484bf4578
|
@ -88,6 +88,11 @@ struct ShmHeader
|
||||||
return HdrPtr(ptr)->refCount;
|
return HdrPtr(ptr)->refCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint16_t UserOffset(char* ptr)
|
||||||
|
{
|
||||||
|
return HdrPartSize() + HdrPtr(ptr)->userOffset;
|
||||||
|
}
|
||||||
|
|
||||||
static char* UserPtr(char* ptr)
|
static char* UserPtr(char* ptr)
|
||||||
{
|
{
|
||||||
// [HdrOffset(uint16_t)][Hdr alignment][Hdr][user buffer alignment][user buffer]
|
// [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) {
|
} else if (newSize <= fMeta.fSize) {
|
||||||
try {
|
try {
|
||||||
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);
|
fLocalPtr = ShmHeader::UserPtr(ptr);
|
||||||
fMeta.fSize = newSize;
|
fMeta.fSize = newSize;
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user