seqnumlive(true),
freespace(SLOT_SIZE - getBaseSize()),
table(_table),
+ fakeLastMessage(NULL),
localSequenceNumber(_localSequenceNumber) {
}
seqnumlive(true),
freespace(SLOT_SIZE - getBaseSize()),
table(_table),
+ fakeLastMessage(NULL),
localSequenceNumber(_localSequenceNumber) {
}
seqnumlive(true),
freespace(SLOT_SIZE - getBaseSize()),
table(_table),
+ fakeLastMessage(NULL),
localSequenceNumber(_localSequenceNumber) {
}
for(uint i=0; i< entries->size(); i++)
delete entries->get(i);
delete entries;
+ if (fakeLastMessage)
+ delete fakeLastMessage;
}
Entry *Slot::addEntry(Entry *e) {
}
}
- if (seqnumlive && !resize)
- liveEntries->add(new LastMessage(this, machineid, seqnum));
-
+ if (seqnumlive && !resize) {
+ if (! fakeLastMessage)
+ fakeLastMessage = new LastMessage(this, machineid, seqnum);
+ liveEntries->add(fakeLastMessage);
+ }
return liveEntries;
}
buffer->putLong(machineid);
int64_t localSequenceNumberShift = localSequenceNumber << 16;
buffer->putLong(localSequenceNumberShift);
- return buffer->array();
+ Array<char> * array = buffer->array();
+ buffer->releaseArray();
+ delete buffer;
+ return array;
}