From 6dbf7aa1291ef758bbec3ed3e144b32ef5ee29db Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 4 Nov 2009 10:59:25 -0800 Subject: [PATCH] - complete html-escaping also in printer.go R=rsc http://go/go-review/1017027 --- src/pkg/go/printer/printer.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/pkg/go/printer/printer.go b/src/pkg/go/printer/printer.go index 265da0ebb77..1511beee97f 100644 --- a/src/pkg/go/printer/printer.go +++ b/src/pkg/go/printer/printer.go @@ -43,9 +43,12 @@ var ( htab = []byte{'\t'}; htabs = [...]byte{'\t', '\t', '\t', '\t', '\t', '\t', '\t', '\t'}; newlines = [...]byte{'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n'}; // more than maxNewlines - ampersand = strings.Bytes("&"); - lessthan = strings.Bytes("<"); - greaterthan = strings.Bytes(">"); + + esc_quot = strings.Bytes("""); // shorter than """ + esc_apos = strings.Bytes("'"); // shorter than "'" + esc_amp = strings.Bytes("&"); + esc_lt = strings.Bytes("<"); + esc_gt = strings.Bytes(">"); ) @@ -145,7 +148,7 @@ func (p *printer) write(data []byte) { // next segment start i0 = i+1; - case '&', '<', '>': + case '"', '\'', '&', '<', '>': if p.Mode & GenHTML != 0 { // write segment ending in b p.write0(data[i0 : i]); @@ -153,9 +156,11 @@ func (p *printer) write(data []byte) { // write HTML-escaped b var esc []byte; switch b { - case '&': esc = ampersand; - case '<': esc = lessthan; - case '>': esc = greaterthan; + case '"': esc = esc_quot; + case '\'': esc = esc_apos; + case '&': esc = esc_amp; + case '<': esc = esc_lt; + case '>': esc = esc_gt; } p.write0(esc);