From e8d34002e1d521ccec9d50dc25d0e7502f87fda4 Mon Sep 17 00:00:00 2001 From: Amal Shaji Date: Wed, 30 Oct 2019 22:49:59 +0530 Subject: [PATCH] map: fixed deletion of non-existent keys --- vlib/builtin/map.v | 6 ++++-- vlib/builtin/map_test.v | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) 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