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]",