From f04db7145cf2bbd58c05861a0e8a9a601697fed9 Mon Sep 17 00:00:00 2001 From: Ronald Date: Wed, 17 Jul 2024 21:19:14 +0100 Subject: [PATCH 1/2] Fix memory leak in encoding/ini A simple change that fixes a memory leak caused by not deleting all the values in the map --- core/encoding/ini/ini.odin | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/encoding/ini/ini.odin b/core/encoding/ini/ini.odin index 6723da2b3..2af13efd9 100644 --- a/core/encoding/ini/ini.odin +++ b/core/encoding/ini/ini.odin @@ -92,7 +92,6 @@ load_map_from_string :: proc(src: string, allocator: runtime.Allocator, options } } return strings.clone(val) - } context.allocator = allocator @@ -114,7 +113,10 @@ load_map_from_string :: proc(src: string, allocator: runtime.Allocator, options new_key = strings.to_lower(key) or_return delete(old_key) or_return } - pairs[new_key] = unquote(value) or_return + pairs[new_key], err = unquote(value) + if err != nil { + return + } } return } @@ -144,6 +146,7 @@ delete_map :: proc(m: Map) { delete(value, allocator) } delete(section) + delete(pairs) } delete(m) } From c768d0719ab924db72331e36cedee0600b129ef0 Mon Sep 17 00:00:00 2001 From: Ronald Date: Wed, 17 Jul 2024 21:57:35 +0100 Subject: [PATCH 2/2] Remove unnecessary change This was accidentally added, it was a change I made whilst testing. --- core/encoding/ini/ini.odin | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/encoding/ini/ini.odin b/core/encoding/ini/ini.odin index 2af13efd9..d0dd33aba 100644 --- a/core/encoding/ini/ini.odin +++ b/core/encoding/ini/ini.odin @@ -113,10 +113,7 @@ load_map_from_string :: proc(src: string, allocator: runtime.Allocator, options new_key = strings.to_lower(key) or_return delete(old_key) or_return } - pairs[new_key], err = unquote(value) - if err != nil { - return - } + pairs[new_key], err = unquote(value) or_return } return }