diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-05-17 20:24:51 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-05-17 20:24:51 +0200 |
commit | c81fe1578e4151e230ffa08a6c5b26b535593ee7 (patch) | |
tree | b301309f15b9f70f52b05a13af756352bced84cb /common/storage/entitystore.cpp | |
parent | eb54f3795fb276046c1a4c0e81fb5426f0659550 (diff) | |
download | sink-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.cpp | 8 |
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 | ||
250 | ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions) const | 250 | ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, 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 | } |