mirror of
https://github.com/valyala/fasthttp.git
synced 2026-06-16 16:17:38 +03:00
@@ -361,7 +361,13 @@ func visitArgs(args []argsKV, f func(k, v []byte)) {
|
||||
func copyArgs(dst, src []argsKV) []argsKV {
|
||||
if cap(dst) < len(src) {
|
||||
tmp := make([]argsKV, len(src))
|
||||
dst = dst[:cap(dst)] // copy all of dst.
|
||||
copy(tmp, dst)
|
||||
for i := len(dst); i < len(tmp); i++ {
|
||||
// Make sure nothing is nil.
|
||||
tmp[i].key = []byte{}
|
||||
tmp[i].value = []byte{}
|
||||
}
|
||||
dst = tmp
|
||||
}
|
||||
n := len(src)
|
||||
@@ -442,7 +448,9 @@ func allocArg(h []argsKV) ([]argsKV, *argsKV) {
|
||||
if cap(h) > n {
|
||||
h = h[:n+1]
|
||||
} else {
|
||||
h = append(h, argsKV{})
|
||||
h = append(h, argsKV{
|
||||
value: []byte{},
|
||||
})
|
||||
}
|
||||
return h, &h[n]
|
||||
}
|
||||
|
||||
+25
-1
@@ -596,4 +596,28 @@ func TestArgsDeleteAll(t *testing.T) {
|
||||
if a.Len() != 1 || a.Has("q1") {
|
||||
t.Fatalf("Expected q1 arg to be completely deleted. Current Args: %s", a.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestIssue932(t *testing.T) {
|
||||
t.Parallel()
|
||||
var a []argsKV
|
||||
|
||||
a = setArg(a, "t1", "ok", argsHasValue)
|
||||
a = setArg(a, "t2", "", argsHasValue)
|
||||
a = setArg(a, "t1", "", argsHasValue)
|
||||
a = setArgBytes(a, s2b("t3"), []byte{}, argsHasValue)
|
||||
a = setArgBytes(a, s2b("t4"), nil, argsHasValue)
|
||||
|
||||
if peekArgStr(a, "t1") == nil {
|
||||
t.Error("nil not expected for t1")
|
||||
}
|
||||
if peekArgStr(a, "t2") == nil {
|
||||
t.Error("nil not expected for t2")
|
||||
}
|
||||
if peekArgStr(a, "t3") == nil {
|
||||
t.Error("nil not expected for t3")
|
||||
}
|
||||
if peekArgStr(a, "t4") != nil {
|
||||
t.Error("nil expected for t4")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user