Skip to content

Commit 4d66d0c

Browse files
committed
Escape unicode newlines in string literals
Fixes #375
1 parent bee0fac commit 4d66d0c

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

dist/handlebars.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1971,7 +1971,9 @@ JavaScriptCompiler.prototype = {
19711971
.replace(/\\/g, '\\\\')
19721972
.replace(/"/g, '\\"')
19731973
.replace(/\n/g, '\\n')
1974-
.replace(/\r/g, '\\r') + '"';
1974+
.replace(/\r/g, '\\r')
1975+
.replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
1976+
.replace(/\u2029/g, '\\u2029') + '"';
19751977
},
19761978

19771979
setupHelper: function(paramSize, name, missingParams) {

lib/handlebars/compiler/compiler.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,9 @@ JavaScriptCompiler.prototype = {
11301130
.replace(/\\/g, '\\\\')
11311131
.replace(/"/g, '\\"')
11321132
.replace(/\n/g, '\\n')
1133-
.replace(/\r/g, '\\r') + '"';
1133+
.replace(/\r/g, '\\r')
1134+
.replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
1135+
.replace(/\u2029/g, '\\u2029') + '"';
11341136
},
11351137

11361138
setupHelper: function(paramSize, name, missingParams) {

spec/qunit_spec.js

+4
Original file line numberDiff line numberDiff line change
@@ -1408,6 +1408,10 @@ test('GH-458: Scoped this identifier', function() {
14081408
shouldCompileTo('{{./foo}}', {foo: 'bar'}, 'bar');
14091409
});
14101410

1411+
test('GH-375: Unicode line terminators', function() {
1412+
shouldCompileTo('\u2028', {}, '\u2028');
1413+
});
1414+
14111415
suite('Utils');
14121416

14131417
test('escapeExpression', function() {

0 commit comments

Comments
 (0)