Selaa lähdekoodia

Clone headers in the svg package

DarthSim 1 vuosi sitten
vanhempi
commit
523f3a6546
1 muutettua tiedostoa jossa 15 lisäystä ja 2 poistoa
  1. 15 2
      svg/svg.go

+ 15 - 2
svg/svg.go

@@ -27,6 +27,19 @@ var feDropShadowTemplate = strings.TrimSpace(`
   </feMerge>
 `)
 
+func cloneHeaders(src map[string]string) map[string]string {
+	if src == nil {
+		return nil
+	}
+
+	dst := make(map[string]string, len(src))
+	for k, v := range src {
+		dst[k] = v
+	}
+
+	return dst
+}
+
 func Sanitize(data *imagedata.ImageData) (*imagedata.ImageData, error) {
 	r := bytes.NewReader(data.Data)
 	l := xml.NewLexer(parse.NewInput(r))
@@ -64,7 +77,7 @@ func Sanitize(data *imagedata.ImageData) (*imagedata.ImageData, error) {
 			newData := imagedata.ImageData{
 				Data:    buf.Bytes(),
 				Type:    data.Type,
-				Headers: data.Headers,
+				Headers: cloneHeaders(data.Headers),
 			}
 			newData.SetCancel(cancel)
 
@@ -196,7 +209,7 @@ func FixUnsupported(data *imagedata.ImageData) (*imagedata.ImageData, bool, erro
 			newData := imagedata.ImageData{
 				Data:    buf.Bytes(),
 				Type:    data.Type,
-				Headers: data.Headers,
+				Headers: cloneHeaders(data.Headers),
 			}
 			newData.SetCancel(cancel)