From: Robert Griesemer Date: Wed, 4 Nov 2009 18:59:25 +0000 (-0800) Subject: - complete html-escaping also in printer.go X-Git-Tag: weekly.2009-11-06~90 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6dbf7aa1291ef758bbec3ed3e144b32ef5ee29db;p=gostls13.git - complete html-escaping also in printer.go R=rsc http://go/go-review/1017027 --- diff --git a/src/pkg/go/printer/printer.go b/src/pkg/go/printer/printer.go index 265da0ebb7..1511beee97 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);