summaryrefslogtreecommitdiff
path: root/threads.js
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 /threads.js
parent457224dd620eea4f20f24ebc62391363333cd00f (diff)
downloadsnap-303188f2d5c3280972d02060e8e0fdaf50b4310e.tar.gz
snap-303188f2d5c3280972d02060e8e0fdaf50b4310e.zip
OOP: integrated and adjusted fix for #752 and #745
Diffstat (limited to 'threads.js')
-rw-r--r--threads.js19
1 files changed, 15 insertions, 4 deletions
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);
};