From 7ad4734e243057f0aeefdef8ee815649cee1d503 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 30 Oct 2011 22:49:02 +0400 Subject: [PATCH] fix infinite loop in computeWrapSplits --- lib/ace/edit_session.js | 5 +++-- lib/ace/edit_session_test.js | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 6697a10c..b8d72b3f 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -1301,10 +1301,11 @@ var EditSession = function(text, mode) { while (split > minSplit && tokens[split] < PLACEHOLDER_START) { split --; } + while (split > minSplit && tokens[split] == PUNCTUATION) { + split --; + } // If we found one, then add the split. if (split > minSplit) { - while(split > minSplit && tokens[split] == PUNCTUATION) - split --; addSplit(++split); continue; } diff --git a/lib/ace/edit_session_test.js b/lib/ace/edit_session_test.js index cb3ce7bb..85277b08 100644 --- a/lib/ace/edit_session_test.js +++ b/lib/ace/edit_session_test.js @@ -346,6 +346,11 @@ module.exports = { computeAndAssert(" ぁぁ", [1, 2], 2); computeAndAssert(" ぁ\tぁ", [1, 3], 2); computeAndAssert(" ぁぁ\tぁ", [1, 4], 4); + + // Test wrapping for punctuation. + computeAndAssert(" ab.c;ef++", [1, 3, 5, 7, 8], 2); + computeAndAssert(" a.b", [1, 2, 3], 1); + computeAndAssert("#>>", [1, 2], 1); }, "test get longest line" : function() {