From a80f32254e649a1811a9459ac4b8b040f4cfc353 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 31 Jul 2019 09:56:08 +0200 Subject: [PATCH] map: fix delete() --- vlib/builtin/map.v | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vlib/builtin/map.v b/vlib/builtin/map.v index ea6ab03db4..7b3bd46aa1 100644 --- a/vlib/builtin/map.v +++ b/vlib/builtin/map.v @@ -16,6 +16,7 @@ pub: struct Node { left *Node right *Node + is_empty bool key string val voidptr } @@ -142,6 +143,9 @@ fn (m map) bs(query string, start, end int, out voidptr) { */ fn (m mut map) preorder_keys(node &Node) { + if node.is_empty { + return + } m._keys[m.key_i] = node.key m.key_i++ if !isnil(node.left) { @@ -172,6 +176,7 @@ fn (m map) get(key string, out voidptr) bool { pub fn (n mut Node) delete(key string, element_size int) { if n.key == key { C.memset(n.val, 0, element_size) + n.is_empty = true return } else if n.key > key {