From 89c2835130e5f77e92c35c52b26d58370be07a7c Mon Sep 17 00:00:00 2001 From: jmoenig Date: Thu, 20 Nov 2014 14:17:06 +0100 Subject: Fixed #642, avoid “freezing” when calling CONS on non-list/null MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit thanks, @brianharvey ! --- history.txt | 4 ++++ lists.js | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index 88d7ca4..53bd4a6 100755 --- a/history.txt +++ b/history.txt @@ -2321,3 +2321,7 @@ ______ 141117 ------ * Threads, Blocks: Treat REPORT blocks inside custom command definitions as STOP THIS BLOCK / IGNORE INPUTS + +141120 +------ +* Lists: Fixed #642, avoid “freezing” when calling CONS on non-list/null diff --git a/lists.js b/lists.js index a4aff6c..bd856fe 100644 --- a/lists.js +++ b/lists.js @@ -61,7 +61,7 @@ PushButtonMorph, SyntaxElementMorph, Color, Point, WatcherMorph, StringMorph, SpriteMorph, ScrollFrameMorph, CellMorph, ArrowMorph, MenuMorph, snapEquals, Morph, isNil, localize, MorphicPreferences*/ -modules.lists = '2014-July-28'; +modules.lists = '2014-November-20'; var List; var ListWatcherMorph; @@ -125,6 +125,9 @@ List.prototype.changed = function () { List.prototype.cons = function (car, cdr) { var answer = new List(); + if (!(cdr instanceof List || isNil(cdr))) { + throw new Error("cdr isn't a list: " + cdr); + } answer.first = isNil(car) ? null : car; answer.rest = cdr || null; answer.isLinked = true; -- cgit v1.3.1