diff --git a/userdata.go b/userdata.go index 9a7c988..37f7d9b 100644 --- a/userdata.go +++ b/userdata.go @@ -81,7 +81,7 @@ func (d *userData) Remove(key string) { kv := &args[i] if string(kv.key) == key { n-- - args[i] = args[n] + args[i], args[n] = args[n], args[i] args[n].value = nil args = args[:n] *d = args diff --git a/userdata_test.go b/userdata_test.go index c46a3e9..3a081ae 100644 --- a/userdata_test.go +++ b/userdata_test.go @@ -104,3 +104,18 @@ func TestUserDataDelete(t *testing.T) { } } + +func TestUserDataSetAndRemove(t *testing.T) { + var ( + u userData + shortKey = "[]" + longKey = "[ ]" + ) + + u.Set(shortKey, "") + u.Set(longKey, "") + u.Remove(shortKey) + u.Set(shortKey, "") + testUserDataGet(t, &u, []byte(shortKey), "") + testUserDataGet(t, &u, []byte(longKey), "") +}