summaryrefslogtreecommitdiffstats
path: root/common/storage/entitystore.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-17 20:24:51 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-17 20:24:51 +0200
commitc81fe1578e4151e230ffa08a6c5b26b535593ee7 (patch)
treeb301309f15b9f70f52b05a13af756352bced84cb /common/storage/entitystore.cpp
parenteb54f3795fb276046c1a4c0e81fb5426f0659550 (diff)
downloadsink-c81fe1578e4151e230ffa08a6c5b26b535593ee7.tar.gz
sink-c81fe1578e4151e230ffa08a6c5b26b535593ee7.zip
Copy the entity when we return it.
Otherwise we easily end up copying it and then have an entity that points into nowhere. Callback -> no copy, no callback -> copy.
Diffstat (limited to 'common/storage/entitystore.cpp')
-rw-r--r--common/storage/entitystore.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/common/storage/entitystore.cpp b/common/storage/entitystore.cpp
index 638be6e..4560b13 100644
--- a/common/storage/entitystore.cpp
+++ b/common/storage/entitystore.cpp
@@ -249,7 +249,7 @@ bool EntityStore::add(const QByteArray &type, ApplicationDomain::ApplicationDoma
249 249
250ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &current, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions) const 250ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &current, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions) const
251{ 251{
252 auto newEntity = *ApplicationDomain::ApplicationDomainType::getInMemoryRepresentation<ApplicationDomain::ApplicationDomainType>(current, current.availableProperties()); 252 auto newEntity = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(current, current.availableProperties());
253 253
254 SinkTraceCtx(d->logCtx) << "Modified entity: " << newEntity; 254 SinkTraceCtx(d->logCtx) << "Modified entity: " << newEntity;
255 255
@@ -512,7 +512,7 @@ ApplicationDomain::ApplicationDomainType EntityStore::readLatest(const QByteArra
512{ 512{
513 ApplicationDomain::ApplicationDomainType dt; 513 ApplicationDomain::ApplicationDomainType dt;
514 readLatest(type, uid, [&](const ApplicationDomain::ApplicationDomainType &entity) { 514 readLatest(type, uid, [&](const ApplicationDomain::ApplicationDomainType &entity) {
515 dt = entity; 515 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties());
516 }); 516 });
517 return dt; 517 return dt;
518} 518}
@@ -539,7 +539,7 @@ ApplicationDomain::ApplicationDomainType EntityStore::readEntity(const QByteArra
539{ 539{
540 ApplicationDomain::ApplicationDomainType dt; 540 ApplicationDomain::ApplicationDomainType dt;
541 readEntity(type, uid, [&](const ApplicationDomain::ApplicationDomainType &entity) { 541 readEntity(type, uid, [&](const ApplicationDomain::ApplicationDomainType &entity) {
542 dt = entity; 542 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties());
543 }); 543 });
544 return dt; 544 return dt;
545} 545}
@@ -601,7 +601,7 @@ ApplicationDomain::ApplicationDomainType EntityStore::readPrevious(const QByteAr
601{ 601{
602 ApplicationDomain::ApplicationDomainType dt; 602 ApplicationDomain::ApplicationDomainType dt;
603 readPrevious(type, uid, revision, [&](const ApplicationDomain::ApplicationDomainType &entity) { 603 readPrevious(type, uid, revision, [&](const ApplicationDomain::ApplicationDomainType &entity) {
604 dt = entity; 604 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties());
605 }); 605 });
606 return dt; 606 return dt;
607} 607}