From d9a849a7338b45bf9f95128584538d7b02b76ee6 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Thu, 4 Feb 2021 10:55:31 +0100 Subject: tests: Don't leak array if length is -1 Found by -fsanitize=address --- tests/basic-types/strings.vala | 3 +++ tests/methods/bug723195.vala | 3 +++ tests/objects/bug751338.vala | 10 ++++++++++ tests/objects/methods.vala | 5 +++++ 4 files changed, 21 insertions(+) diff --git a/tests/basic-types/strings.vala b/tests/basic-types/strings.vala index e1aa55ff1..e1cfd9afb 100644 --- a/tests/basic-types/strings.vala +++ b/tests/basic-types/strings.vala @@ -60,6 +60,9 @@ void test_string_joinv () { s = string.joinv ("-", null); assert (s == ""); + + // LeakSanitizer -fsanitize=address + sa.length = 3; } void test_string_printf () { diff --git a/tests/methods/bug723195.vala b/tests/methods/bug723195.vala index e0676cb29..c7dcf13ac 100644 --- a/tests/methods/bug723195.vala +++ b/tests/methods/bug723195.vala @@ -20,4 +20,7 @@ void main () { assert (string.joinv (":", a) == "foo:bar"); assert (string.joinv (":", null) == ""); + + // LeakSanitizer -fsanitize=address + a.length = 4; } diff --git a/tests/objects/bug751338.vala b/tests/objects/bug751338.vala index 353071e9d..a766cca95 100644 --- a/tests/objects/bug751338.vala +++ b/tests/objects/bug751338.vala @@ -16,6 +16,11 @@ void main() { assert (strings[0] == "foo"); assert (strings[1] == "bar"); + // LeakSanitizer -fsanitize=address + if (strings.length == -1) { + strings.length = (int) strv_length (strings); + } + f.set("strings", null); f.get("strings", out strings); assert(strings == null); @@ -24,4 +29,9 @@ void main() { f.get("strings", out strings); assert (strings[0] == "foo"); assert (strings[1] == "bar"); + + // LeakSanitizer -fsanitize=address + if (strings.length == -1) { + strings.length = (int) strv_length (strings); + } } diff --git a/tests/objects/methods.vala b/tests/objects/methods.vala index cfacc9c73..30043e26a 100644 --- a/tests/objects/methods.vala +++ b/tests/objects/methods.vala @@ -84,6 +84,11 @@ class Maman.SubBar : Bar { assert (array[1] == "world"); assert (array.length < 0); + // LeakSanitizer -fsanitize=address + if (array.length == -1) { + array.length = (int) strv_length (array); + } + ClassTest.run_test (); return 0; -- cgit v1.2.1