From 877c9ca099702f5e588bd8ac7d6fe19288303eb1 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Wed, 17 Aug 2022 17:21:18 +0200 Subject: [PATCH] Fixed cache bashing in checks Cache should only return clones of data, not references to the cached data --- app/imports/api/engine/loadCreatures.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/imports/api/engine/loadCreatures.js b/app/imports/api/engine/loadCreatures.js index 2acd342f..aa036a37 100644 --- a/app/imports/api/engine/loadCreatures.js +++ b/app/imports/api/engine/loadCreatures.js @@ -97,7 +97,10 @@ export function getCreature(creatureId) { if (loadedCreatures.has(creatureId)) { const loadedCreature = loadedCreatures.get(creatureId); const creature = loadedCreature.creature; - if (creature) return creature; + if (creature) { + const cloneCreature = EJSON.clone(creature); + return cloneCreature; + } } // console.time(`Cache miss on Creature: ${creatureId}`); const creature = Creatures.findOne(creatureId); @@ -109,7 +112,10 @@ export function getVariables(creatureId) { if (loadedCreatures.has(creatureId)) { const loadedCreature = loadedCreatures.get(creatureId); const variables = loadedCreature.variables; - if (variables) return variables; + if (variables) { + const cloneVarables = EJSON.clone(variables); + return cloneVarables; + } } // console.time(`Cache miss on variables: ${creatureId}`); const variables = CreatureVariables.findOne({_creatureId: creatureId});