diff --git a/vlib/builtin/map.v b/vlib/builtin/map.v index 595873d3f6..c2be212951 100644 --- a/vlib/builtin/map.v +++ b/vlib/builtin/map.v @@ -207,8 +207,10 @@ pub fn (n mut mapnode) delete(key string, element_size int) { } pub fn (m mut map) delete(key string) { - m.root.delete(key, m.element_size) - m.size-- + if m.exists(key) { + m.root.delete(key, m.element_size) + m.size-- + } } fn (m map) exists(key string) bool { diff --git a/vlib/builtin/map_test.v b/vlib/builtin/map_test.v index 937b031ac1..8675762582 100644 --- a/vlib/builtin/map_test.v +++ b/vlib/builtin/map_test.v @@ -38,6 +38,8 @@ fn test_map() { assert keys[1] == 'hello' m.delete('hi') assert m.size == 1 + m.delete('aloha') + assert m.size == 1 assert m['hi'] == 0 assert m.keys().len == 1