Thomas Huth <th...@redhat.com> writes: > On 2018-09-03 07:51, Markus Armbruster wrote: >> Thomas Huth <th...@redhat.com> writes: >> >>> On 2018-09-01 23:19, Marc-André Lureau wrote: >>>> Spotted by ASAN: >>>> ================================================================= >>>> ==11893==ERROR: LeakSanitizer: detected memory leaks >>>> >>>> Direct leak of 1120 byte(s) in 28 object(s) allocated from: >>>> #0 0x7fd0515b0c48 in malloc (/lib64/libasan.so.5+0xeec48) >>>> #1 0x7fd050ffa3c5 in g_malloc (/lib64/libglib-2.0.so.0+0x523c5) >>>> #2 0x559e708b56a4 in qstring_from_str >>>> /home/elmarco/src/qq/qobject/qstring.c:66 >>>> #3 0x559e708b4fe0 in qstring_new >>>> /home/elmarco/src/qq/qobject/qstring.c:23 >>>> #4 0x559e708bda7d in parse_string >>>> /home/elmarco/src/qq/qobject/json-parser.c:143 >>>> #5 0x559e708c1009 in parse_literal >>>> /home/elmarco/src/qq/qobject/json-parser.c:484 >>>> #6 0x559e708c1627 in parse_value >>>> /home/elmarco/src/qq/qobject/json-parser.c:547 >>>> #7 0x559e708c1c67 in json_parser_parse >>>> /home/elmarco/src/qq/qobject/json-parser.c:573 >>>> #8 0x559e708bc0ff in json_message_process_token >>>> /home/elmarco/src/qq/qobject/json-streamer.c:92 >>>> #9 0x559e708d1655 in json_lexer_feed_char >>>> /home/elmarco/src/qq/qobject/json-lexer.c:292 >>>> #10 0x559e708d1fe1 in json_lexer_feed >>>> /home/elmarco/src/qq/qobject/json-lexer.c:339 >>>> #11 0x559e708bc856 in json_message_parser_feed >>>> /home/elmarco/src/qq/qobject/json-streamer.c:121 >>>> #12 0x559e708b8b4b in qobject_from_jsonv >>>> /home/elmarco/src/qq/qobject/qjson.c:69 >>>> #13 0x559e708b8d02 in qobject_from_json >>>> /home/elmarco/src/qq/qobject/qjson.c:83 >>>> #14 0x559e708a74ae in from_json_str >>>> /home/elmarco/src/qq/tests/check-qjson.c:30 >>>> #15 0x559e708a9f83 in utf8_string >>>> /home/elmarco/src/qq/tests/check-qjson.c:781 >>>> #16 0x7fd05101bc49 in test_case_run gtestutils.c:2255 >>>> #17 0x7fd05101bc49 in g_test_run_suite_internal gtestutils.c:2339 >>>> >>>> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> >>>> --- >>>> tests/check-qjson.c | 1 + >>>> 1 file changed, 1 insertion(+) >>>> >>>> diff --git a/tests/check-qjson.c b/tests/check-qjson.c >>>> index cc13f3d41e..d876a7a96e 100644 >>>> --- a/tests/check-qjson.c >>>> +++ b/tests/check-qjson.c >>>> @@ -780,6 +780,7 @@ static void utf8_string(void) >>>> if (!strstr(json_out, "\\uFFFD")) { >>>> str = from_json_str(json_out, j, &error_abort); >>>> g_assert_cmpstr(qstring_get_try_str(str), ==, utf8_in); >>>> + qobject_unref(str); >>>> } >>>> } >>>> } >>>> >>> >>> There are other occurances of from_json_str() which are not followed by >>> an object_unref() ... do they need to be fixed as well? >>> (e.g. at the end of escaped_string(), or earlier in utf8_string()) >> >> These are all asserted to be null, aren't they? > > Ah, right, sorry, it's still too early in the morning here, I guess ;-)
I was about to write "I should've waited for the coffee to kick in" when I remembered what g_assert(!str) means :)