Commit::~Commit() {
delete parts;
- delete keyValueUpdateSet;
- delete liveKeys;
+ {
+ SetIterator<KeyValue *, KeyValue *, uintptr_t, 0> * keyit = keyValueUpdateSet->iterator();
+ while(keyit->hasNext()) {
+ delete keyit->next();
+ }
+ delete keyit;
+ delete keyValueUpdateSet;
+ }
+ delete liveKeys;
if (missingParts != NULL)
delete missingParts;
}
}
void Commit::addKV(KeyValue *kv) {
- keyValueUpdateSet->add(kv);
- liveKeys->add(kv->getKey());
+ KeyValue * kvcopy = kv->getCopy();
+ keyValueUpdateSet->add(kvcopy);
+ liveKeys->add(kvcopy->getKey());
}
void Commit::invalidateKey(IoTString *key) {
commitPartCount++;
remaining -= copySize;
}
+ delete charData;
}
void Commit::decodeCommitData() {
keyValueUpdateSet->add(kv);
liveKeys->add(kv->getKey());
}
+ delete bbDecode;
}
Array<char> *Commit::convertDataToBytes() {
kv->encode(bbEncode);
}
delete kvit;
-
- return bbEncode->array();
+ Array<char> * array = bbEncode->array();
+ bbEncode->releaseArray();
+ delete bbEncode;
+ return array;
}
void Commit::setKVsMap(Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals> *newKVs) {
SetIterator<KeyValue *, KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals> *kvit = newKVs->iterator();
while (kvit->hasNext()) {
KeyValue *kv = kvit->next();
- liveKeys->add(kv->getKey());
- keyValueUpdateSet->add(kv);
+ KeyValue *kvcopy = kv->getCopy();
+ liveKeys->add(kvcopy->getKey());
+ keyValueUpdateSet->add(kvcopy);
}
delete kvit;
}