Skip to content

Commit b180d09

Browse files
authoredMay 5, 2023
fix(xml/codegen): Escape < and > in child (#7351)
1 parent 5e595e7 commit b180d09

File tree

4 files changed

+7
-1
lines changed

4 files changed

+7
-1
lines changed
 

‎crates/swc_xml_codegen/src/lib.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,9 @@ fn minify_text(value: &str) -> String {
371371
'<' => {
372372
result.push_str("&lt;");
373373
}
374+
'>' => {
375+
result.push_str("&gt;");
376+
}
374377
_ => result.push(c),
375378
}
376379
}
@@ -463,7 +466,7 @@ fn escape_string(value: &str, is_attribute_mode: bool) -> String {
463466
result.push_str("&amp;");
464467
}
465468
'"' if is_attribute_mode => result.push_str("&quot;"),
466-
'<' if is_attribute_mode => {
469+
'<' => {
467470
result.push_str("&lt;");
468471
}
469472
'>' if !is_attribute_mode => {

‎crates/swc_xml_codegen/tests/fixture/base/input.xml

+1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
<foo attributeName="He said >OK>"></foo>
1111
<foo attributeName="He said &apos;OK&apos;"></foo>
1212
<foo attributeName="He said &amp;OK&amp;"></foo>
13+
<foo>He said &gt;OK&gt;</foo>
1314
</note>

‎crates/swc_xml_codegen/tests/fixture/base/output.min.xml

+1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
<foo attributeName="He said >OK>"/>
1010
<foo attributeName="He said 'OK'"/>
1111
<foo attributeName="He said &amp;OK&amp;"/>
12+
<foo>He said &gt;OK&gt;</foo>
1213
</note>

‎crates/swc_xml_codegen/tests/fixture/base/output.xml

+1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
<foo attributeName="He said >OK>" />
1010
<foo attributeName="He said 'OK'" />
1111
<foo attributeName="He said &amp;OK&amp;" />
12+
<foo>He said &gt;OK&gt;</foo>
1213
</note>

1 commit comments

Comments
 (1)

github-actions[bot] commented on May 5, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: b180d09 Previous: 4e278be Ratio
es/full/bugs-1 309501 ns/iter (± 7055) 295686 ns/iter (± 15081) 1.05
es/full/minify/libraries/antd 1539336494 ns/iter (± 38948781) 1664963713 ns/iter (± 23423849) 0.92
es/full/minify/libraries/d3 286258107 ns/iter (± 5305093) 307607216 ns/iter (± 8643244) 0.93
es/full/minify/libraries/echarts 1182227943 ns/iter (± 8717874) 1248293151 ns/iter (± 23384943) 0.95
es/full/minify/libraries/jquery 94343943 ns/iter (± 8352130) 91196760 ns/iter (± 928158) 1.03
es/full/minify/libraries/lodash 104993293 ns/iter (± 1418152) 106703434 ns/iter (± 1431880) 0.98
es/full/minify/libraries/moment 52027785 ns/iter (± 578872) 52390398 ns/iter (± 503417) 0.99
es/full/minify/libraries/react 20306923 ns/iter (± 498814) 19122135 ns/iter (± 133343) 1.06
es/full/minify/libraries/terser 276478817 ns/iter (± 4446981) 250577477 ns/iter (± 4174203) 1.10
es/full/minify/libraries/three 485678028 ns/iter (± 6160640) 447055544 ns/iter (± 6526520) 1.09
es/full/minify/libraries/typescript 3290515445 ns/iter (± 48407287) 3103291449 ns/iter (± 18558854) 1.06
es/full/minify/libraries/victory 705262381 ns/iter (± 43823420) 693657753 ns/iter (± 14980483) 1.02
es/full/minify/libraries/vue 132361613 ns/iter (± 1851563) 130879387 ns/iter (± 959617) 1.01
es/full/codegen/es3 28667 ns/iter (± 87) 28838 ns/iter (± 51) 0.99
es/full/codegen/es5 28811 ns/iter (± 67) 28923 ns/iter (± 49) 1.00
es/full/codegen/es2015 28799 ns/iter (± 61) 28884 ns/iter (± 36) 1.00
es/full/codegen/es2016 28467 ns/iter (± 161) 28857 ns/iter (± 56) 0.99
es/full/codegen/es2017 28163 ns/iter (± 444) 28873 ns/iter (± 47) 0.98
es/full/codegen/es2018 27699 ns/iter (± 202) 28867 ns/iter (± 47) 0.96
es/full/codegen/es2019 27688 ns/iter (± 231) 28850 ns/iter (± 32) 0.96
es/full/codegen/es2020 27726 ns/iter (± 263) 28849 ns/iter (± 68) 0.96
es/full/all/es3 179217140 ns/iter (± 2718500) 180053725 ns/iter (± 2393067) 1.00
es/full/all/es5 172695379 ns/iter (± 2075311) 173474601 ns/iter (± 2656956) 1.00
es/full/all/es2015 135798889 ns/iter (± 2300924) 132324760 ns/iter (± 1748979) 1.03
es/full/all/es2016 134671578 ns/iter (± 3370644) 132328269 ns/iter (± 2548545) 1.02
es/full/all/es2017 131186291 ns/iter (± 2088997) 128449874 ns/iter (± 1398887) 1.02
es/full/all/es2018 124608769 ns/iter (± 2087571) 124305061 ns/iter (± 1725247) 1.00
es/full/all/es2019 125471145 ns/iter (± 2245042) 123964352 ns/iter (± 1678110) 1.01
es/full/all/es2020 118320062 ns/iter (± 1001921) 116820657 ns/iter (± 518103) 1.01
es/full/parser 508033 ns/iter (± 7281) 516321 ns/iter (± 6828) 0.98
es/full/base/fixer 22445 ns/iter (± 73) 23744 ns/iter (± 29) 0.95
es/full/base/resolver_and_hygiene 87148 ns/iter (± 515) 85755 ns/iter (± 473) 1.02
serialization of serde 121 ns/iter (± 0) 121 ns/iter (± 0) 1
css/minify/libraries/bootstrap 28231668 ns/iter (± 255151) 27519707 ns/iter (± 111765) 1.03
css/visitor/compare/clone 2121654 ns/iter (± 10102) 2068061 ns/iter (± 21616) 1.03
css/visitor/compare/visit_mut_span 2285541 ns/iter (± 27898) 2289272 ns/iter (± 101711) 1.00
css/visitor/compare/visit_mut_span_panic 2311291 ns/iter (± 19250) 2345599 ns/iter (± 4644) 0.99
css/visitor/compare/fold_span 3014686 ns/iter (± 13750) 3050974 ns/iter (± 10517) 0.99
css/visitor/compare/fold_span_panic 3167449 ns/iter (± 29069) 3208954 ns/iter (± 9153) 0.99
css/lexer/bootstrap_5_1_3 5191485 ns/iter (± 38467) 5187688 ns/iter (± 12951) 1.00
css/lexer/foundation_6_7_4 4359374 ns/iter (± 7170) 4355381 ns/iter (± 9381) 1.00
css/lexer/tailwind_3_1_1 821521 ns/iter (± 9092) 828222 ns/iter (± 711) 0.99
css/parser/bootstrap_5_1_3 21279764 ns/iter (± 106216) 21273308 ns/iter (± 495946) 1.00
css/parser/foundation_6_7_4 16643383 ns/iter (± 114556) 16827563 ns/iter (± 75136) 0.99
css/parser/tailwind_3_1_1 3207521 ns/iter (± 10452) 3241279 ns/iter (± 8002) 0.99
es/codegen/colors 321015 ns/iter (± 184982) 327880 ns/iter (± 186266) 0.98
es/codegen/large 1242327 ns/iter (± 642395) 1246832 ns/iter (± 652812) 1.00
es/codegen/with-parser/colors 48079 ns/iter (± 459) 48408 ns/iter (± 362) 0.99
es/codegen/with-parser/large 516420 ns/iter (± 3234) 514384 ns/iter (± 1081) 1.00
es/minify/libraries/antd 1386910308 ns/iter (± 34248794) 1463096990 ns/iter (± 24403339) 0.95
es/minify/libraries/d3 256153122 ns/iter (± 10095114) 262616887 ns/iter (± 3666250) 0.98
es/minify/libraries/echarts 1116075427 ns/iter (± 41950290) 1081740357 ns/iter (± 19353004) 1.03
es/minify/libraries/jquery 78716011 ns/iter (± 3343652) 79770040 ns/iter (± 675619) 0.99
es/minify/libraries/lodash 93236759 ns/iter (± 738752) 96022970 ns/iter (± 967475) 0.97
es/minify/libraries/moment 45175079 ns/iter (± 343673) 45654196 ns/iter (± 297674) 0.99
es/minify/libraries/react 16799930 ns/iter (± 117744) 17244102 ns/iter (± 210365) 0.97
es/minify/libraries/terser 205950214 ns/iter (± 2227500) 213343052 ns/iter (± 3981622) 0.97
es/minify/libraries/three 340115549 ns/iter (± 7172136) 367452417 ns/iter (± 7539847) 0.93
es/minify/libraries/typescript 2545898823 ns/iter (± 50442586) 2657283948 ns/iter (± 16415030) 0.96
es/minify/libraries/victory 541314262 ns/iter (± 20468622) 579761273 ns/iter (± 12944730) 0.93
es/minify/libraries/vue 128611301 ns/iter (± 12343868) 116609216 ns/iter (± 1301683) 1.10
es/visitor/compare/clone 2340933 ns/iter (± 7672) 2348287 ns/iter (± 14664) 1.00
es/visitor/compare/visit_mut_span 2734997 ns/iter (± 7256) 2705830 ns/iter (± 5051) 1.01
es/visitor/compare/visit_mut_span_panic 2809419 ns/iter (± 31677) 2757506 ns/iter (± 3515) 1.02
es/visitor/compare/fold_span 3865410 ns/iter (± 53078) 3818076 ns/iter (± 7057) 1.01
es/visitor/compare/fold_span_panic 3986477 ns/iter (± 7282) 3956288 ns/iter (± 14027) 1.01
es/lexer/colors 13163 ns/iter (± 52) 13188 ns/iter (± 38) 1.00
es/lexer/angular 6403958 ns/iter (± 7652) 6384597 ns/iter (± 1423) 1.00
es/lexer/backbone 790997 ns/iter (± 2338) 788023 ns/iter (± 1844) 1.00
es/lexer/jquery 4373893 ns/iter (± 29576) 4413712 ns/iter (± 26929) 0.99
es/lexer/jquery mobile 6910399 ns/iter (± 51540) 6896519 ns/iter (± 11829) 1.00
es/lexer/mootools 3437621 ns/iter (± 26153) 3472870 ns/iter (± 994) 0.99
es/lexer/underscore 650095 ns/iter (± 1760) 652100 ns/iter (± 1351) 1.00
es/lexer/three 20991024 ns/iter (± 57498) 20968071 ns/iter (± 7627) 1.00
es/lexer/yui 3881764 ns/iter (± 3000) 3869315 ns/iter (± 1297) 1.00
es/parser/colors 28697 ns/iter (± 35) 29031 ns/iter (± 72) 0.99
es/parser/angular 15318780 ns/iter (± 438617) 15109516 ns/iter (± 171323) 1.01
es/parser/backbone 2150320 ns/iter (± 13694) 2151663 ns/iter (± 15022) 1.00
es/parser/jquery 11471917 ns/iter (± 83817) 11823841 ns/iter (± 112579) 0.97
es/parser/jquery mobile 17599124 ns/iter (± 123901) 18379448 ns/iter (± 309908) 0.96
es/parser/mootools 8836953 ns/iter (± 155035) 8898746 ns/iter (± 47265) 0.99
es/parser/underscore 1805626 ns/iter (± 13048) 1811573 ns/iter (± 8558) 1.00
es/parser/three 53235430 ns/iter (± 1006350) 56069885 ns/iter (± 297366) 0.95
es/parser/yui 9005671 ns/iter (± 65853) 9036109 ns/iter (± 96356) 1.00
es/preset-env/usage/builtin_type 141313 ns/iter (± 33865) 140731 ns/iter (± 34662) 1.00
es/preset-env/usage/property 19145 ns/iter (± 125) 19589 ns/iter (± 62) 0.98
es/resolver/typescript 111874136 ns/iter (± 3745382) 121909491 ns/iter (± 2142847) 0.92
es/fixer/typescript 82437497 ns/iter (± 1272555) 89618352 ns/iter (± 2706459) 0.92
es/hygiene/typescript 178627451 ns/iter (± 8327835) 191644639 ns/iter (± 1512169) 0.93
es/resolver_with_hygiene/typescript 310742002 ns/iter (± 4178053) 329649220 ns/iter (± 3419994) 0.94
es/visitor/base-perf/module_clone 78058 ns/iter (± 563) 81010 ns/iter (± 489) 0.96
es/visitor/base-perf/fold_empty 87614 ns/iter (± 635) 90906 ns/iter (± 553) 0.96
es/visitor/base-perf/fold_noop_impl_all 87655 ns/iter (± 1316) 90935 ns/iter (± 311) 0.96
es/visitor/base-perf/fold_noop_impl_vec 87697 ns/iter (± 620) 90945 ns/iter (± 388) 0.96
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 56 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 41 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_boxed 98 ns/iter (± 0) 102 ns/iter (± 1) 0.96
es/visitor/base-perf/boxing_unboxed 75 ns/iter (± 0) 78 ns/iter (± 0) 0.96
es/visitor/base-perf/visit_contains_this 3460 ns/iter (± 99) 3552 ns/iter (± 56) 0.97
es/base/parallel/resolver/typescript 6058844875 ns/iter (± 561945422) 6086863004 ns/iter (± 471638812) 1.00
es/base/parallel/hygiene/typescript 2163029421 ns/iter (± 27207277) 2201366994 ns/iter (± 20421651) 0.98
misc/visitors/time-complexity/time 5 104 ns/iter (± 0) 106 ns/iter (± 0) 0.98
misc/visitors/time-complexity/time 10 341 ns/iter (± 2) 345 ns/iter (± 0) 0.99
misc/visitors/time-complexity/time 15 655 ns/iter (± 6) 665 ns/iter (± 0) 0.98
misc/visitors/time-complexity/time 20 1230 ns/iter (± 26) 1233 ns/iter (± 3) 1.00
misc/visitors/time-complexity/time 40 6200 ns/iter (± 10) 6222 ns/iter (± 63) 1.00
misc/visitors/time-complexity/time 60 15574 ns/iter (± 39) 15599 ns/iter (± 7) 1.00
es/full-target/es2016 252235 ns/iter (± 1952) 253746 ns/iter (± 268) 0.99
es/full-target/es2017 242149 ns/iter (± 1960) 245448 ns/iter (± 390) 0.99
es/full-target/es2018 228990 ns/iter (± 1624) 235321 ns/iter (± 331) 0.97
es2020_nullish_coalescing 91656 ns/iter (± 1028) 92532 ns/iter (± 302) 0.99
es2020_optional_chaining 121318 ns/iter (± 798) 124070 ns/iter (± 665) 0.98
es2022_class_properties 145672 ns/iter (± 1010) 149192 ns/iter (± 321) 0.98
es2018_object_rest_spread 93155 ns/iter (± 1147) 95795 ns/iter (± 164) 0.97
es2019_optional_catch_binding 83330 ns/iter (± 721) 85547 ns/iter (± 156) 0.97
es2017_async_to_generator 84127 ns/iter (± 991) 85393 ns/iter (± 168) 0.99
es2016_exponentiation 88779 ns/iter (± 811) 90281 ns/iter (± 256) 0.98
es2015_arrow 92225 ns/iter (± 665) 93801 ns/iter (± 157) 0.98
es2015_block_scoped_fn 89968 ns/iter (± 665) 91946 ns/iter (± 209) 0.98
es2015_block_scoping 166901 ns/iter (± 2095) 169392 ns/iter (± 209) 0.99

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.