mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-06-06 18:44:37 -04:00
Make duplicateVariable deep copy the array instead of keeping reference.
This commit is contained in:
parent
122443a75f
commit
d50504e339
2 changed files with 17 additions and 1 deletions
|
@ -354,7 +354,11 @@ class Target extends EventEmitter {
|
|||
originalVariable.type,
|
||||
originalVariable.isCloud
|
||||
);
|
||||
newVariable.value = originalVariable.value;
|
||||
if (newVariable.type === Variable.LIST_TYPE) {
|
||||
newVariable.value = originalVariable.value.slice(0);
|
||||
} else {
|
||||
newVariable.value = originalVariable.value;
|
||||
}
|
||||
return newVariable;
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -323,6 +323,18 @@ test('duplicateVariable creates a new variable with a new ID by default', t => {
|
|||
t.end();
|
||||
});
|
||||
|
||||
test('duplicateVariable creates new array reference for list variable.value', t => {
|
||||
const target = new Target();
|
||||
const arr = [1, 2, 3];
|
||||
target.createVariable('a var ID', arr, Variable.LIST_TYPE);
|
||||
const originalVariable = target.variables['a var ID'];
|
||||
const newVariable = target.duplicateVariable('a var ID');
|
||||
// Values are deeply equal but not the same object
|
||||
t.deepEqual(originalVariable.value, newVariable.value);
|
||||
t.notEqual(originalVariable.value, newVariable.value);
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('duplicateVariable creates a new variable with a original ID if specified', t => {
|
||||
const target = new Target();
|
||||
target.createVariable('a var ID', 'foo', Variable.SCALAR_TYPE);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue