diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 index d50880c2938..bc15c40fb2b 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/bbcode.js.es6 @@ -114,10 +114,12 @@ export function setup(helper) { replaceBBCode('url', contents => { if (!Array.isArray(contents)) { return; } - if (contents.length === 1 && contents[0][0] === 'a') { + + const first = contents[0]; + if (contents.length === 1 && Array.isArray(first) && first[0] === 'a') { // single-line bbcode links shouldn't be oneboxed, so we mark this as a bbcode link. - if (typeof contents[0][1] !== 'object') { contents[0].splice(1, 0, {}); } - contents[0][1]['data-bbcode'] = true; + if (typeof first[1] !== 'object') { first.splice(1, 0, {}); } + first[1]['data-bbcode'] = true; } return ['concat'].concat(contents); }); diff --git a/test/javascripts/lib/pretty-text-test.js.es6 b/test/javascripts/lib/pretty-text-test.js.es6 index e4ef370a01e..af6486b33a9 100644 --- a/test/javascripts/lib/pretty-text-test.js.es6 +++ b/test/javascripts/lib/pretty-text-test.js.es6 @@ -551,6 +551,7 @@ test('basic bbcode', function() { test('urls', function() { cookedPara("[url]not a url[/url]", "not a url", "supports [url] that isn't a url"); + cookedPara("[url]abc.com[/url]", "abc.com", "no error when a url has no protocol and begins with a"); cookedPara("[url]http://bettercallsaul.com[/url]", "http://bettercallsaul.com", "supports [url] without parameter"); cookedPara("[url=http://example.com]example[/url]", "example", "supports [url] with given href"); cookedPara("[url=http://www.example.com][img]http://example.com/logo.png[/img][/url]",