From 751adb24fde9a093e3bf57e2e8350b2ae67db52e Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 5 Jan 2015 18:38:34 +0100 Subject: Finally fix AttribManager#removeAttributeOnLine return safely if the attribute wasn't found. fixes #2394 --- src/static/js/AttributeManager.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/static/js/AttributeManager.js b/src/static/js/AttributeManager.js index a11f6cef..974d8ad9 100644 --- a/src/static/js/AttributeManager.js +++ b/src/static/js/AttributeManager.js @@ -164,12 +164,20 @@ AttributeManager.prototype = _(AttributeManager.prototype).extend({ var builder = Changeset.builder(this.rep.lines.totalWidth()); var hasMarker = this.lineHasMarker(lineNum); var attribs + var foundAttrib = false attribs = this.getAttributesOnLine(lineNum).map(function(attrib) { - if(attrib[0] === attributeName) return [attributeName, null] + if(attrib[0] === attributeName) { + foundAttrib = true + return [attributeName, null] // remove this attrib from the linemarker + } return attrib }) + if(!foundAttrib) { + return + } + if(hasMarker){ ChangesetUtils.buildKeepRange(this.rep, builder, loc, (loc = [lineNum, 0])); // If length == 4, there's [author, lmkr, insertorder, + the attrib being removed] thus we can remove the marker entirely -- cgit v1.2.3