From 36f793c1f44cd3f0c229d679a30b7420121f7e09 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 10 Jun 2015 14:25:42 +0100 Subject: [PATCH] Delete entry from addresses map when slice is empty --- ipam/allocator.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ipam/allocator.go b/ipam/allocator.go index e3edfcc7..72ef3072 100644 --- a/ipam/allocator.go +++ b/ipam/allocator.go @@ -250,8 +250,11 @@ func (alloc *Allocator) Free(ident string, addrToFree address.Address) error { for i, ownedAddr := range addrs { if ownedAddr == addrToFree { alloc.debugln("Freed", addrToFree, "for", ident) - addrs = append(addrs[:i], addrs[i+1:]...) - alloc.owned[ident] = addrs + if len(addrs) == 1 { + delete(alloc.owned, ident) + } else { + alloc.owned[ident] = append(addrs[:i], addrs[i+1:]...) + } alloc.space.Free(addrToFree) errChan <- nil return