]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: return nil from Header.Clone if the receiver is nil
authorAndrew Bonventre <andybons@golang.org>
Tue, 30 Jul 2019 21:03:16 +0000 (17:03 -0400)
committerAndrew Bonventre <andybons@golang.org>
Wed, 31 Jul 2019 16:15:56 +0000 (16:15 +0000)
Fixes #33141

Change-Id: I84a8b3496fc9396fd1c09ba9505697c34bdf7105
Reviewed-on: https://go-review.googlesource.com/c/go/+/188022
Run-TryBot: Andrew Bonventre <andybons@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/net/http/header.go
src/net/http/header_test.go

index 1e1ed981ecc1961b626e2c0441f38ebbfdde07ca..230ca03d4f052d0f60d7c543c086171513fb947a 100644 (file)
@@ -78,8 +78,12 @@ func (h Header) write(w io.Writer, trace *httptrace.ClientTrace) error {
        return h.writeSubset(w, nil, trace)
 }
 
-// Clone returns a copy of h.
+// Clone returns a copy of h or nil if h is nil.
 func (h Header) Clone() Header {
+       if h == nil {
+               return nil
+       }
+
        // Find total number of values.
        nv := 0
        for _, vv := range h {
index 48158d313aeba70e7ae591f8f0d33f3dbeb9eaee..51fcab103b42472fd4280d438d63d93b507c1d6e 100644 (file)
@@ -176,6 +176,14 @@ func TestHasToken(t *testing.T) {
        }
 }
 
+func TestNilHeaderClone(t *testing.T) {
+       t1 := Header(nil)
+       t2 := t1.Clone()
+       if t2 != nil {
+               t.Errorf("cloned header does not match original: got: %+v; want: %+v", t2, nil)
+       }
+}
+
 var testHeader = Header{
        "Content-Length": {"123"},
        "Content-Type":   {"text/plain"},