summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Mönig <jens@moenig.org>2015-03-25 14:05:34 +0100
committerJens Mönig <jens@moenig.org>2015-03-25 14:05:34 +0100
commit303188f2d5c3280972d02060e8e0fdaf50b4310e (patch)
tree965ba7f14217c339eadcdece10c6f0863780c26f
parent457224dd620eea4f20f24ebc62391363333cd00f (diff)
downloadsnap-303188f2d5c3280972d02060e8e0fdaf50b4310e.tar.gz
snap-303188f2d5c3280972d02060e8e0fdaf50b4310e.zip
OOP: integrated and adjusted fix for #752 and #745
-rwxr-xr-xhistory.txt5
-rw-r--r--threads.js19
2 files changed, 20 insertions, 4 deletions
diff --git a/history.txt b/history.txt
index fda02a3..8a2066d 100755
--- a/history.txt
+++ b/history.txt
@@ -2488,3 +2488,8 @@ ______
150323
------
* OOP: Morphic, Objects, Store - tweak inherited variable watcher slider deserialization
+
+150325
+------
+* Threads: fixed #752
+* OOP: integrated and adjusted fix for #752
diff --git a/threads.js b/threads.js
index 0511c53..52f464d 100644
--- a/threads.js
+++ b/threads.js
@@ -83,7 +83,7 @@ ArgLabelMorph, localize, XML_Element, hex_sha512*/
// Global stuff ////////////////////////////////////////////////////////
-modules.threads = '2015-March-23';
+modules.threads = '2015-March-25';
var ThreadManager;
var Process;
@@ -1153,10 +1153,14 @@ Process.prototype.doDeclareVariables = function (varNames) {
Process.prototype.doSetVar = function (varName, value) {
var varFrame = this.context.variables,
name = varName;
-
if (name instanceof Context) {
if (name.expression.selector === 'reportGetVar') {
- name = name.expression.blockSpec;
+ name.variables.setVar(
+ name.expression.blockSpec,
+ value,
+ this.blockReceiver()
+ );
+ return;
}
}
varFrame.setVar(name, value, this.blockReceiver());
@@ -1168,7 +1172,12 @@ Process.prototype.doChangeVar = function (varName, value) {
if (name instanceof Context) {
if (name.expression.selector === 'reportGetVar') {
- name = name.expression.blockSpec;
+ name.variables.changeVar(
+ name.expression.blockSpec,
+ value,
+ this.blockReceiver()
+ );
+ return;
}
}
varFrame.changeVar(name, value, this.blockReceiver());
@@ -1340,6 +1349,8 @@ Process.prototype.doDeleteFromList = function (index, list) {
}
if (this.inputOption(index) === 'last') {
idx = list.length();
+ } else if (isNaN(+this.inputOption(index))) {
+ return null;
}
list.remove(idx);
};