[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH-for-5.2? 1/2] tests/qtest: variable defined by g_autofree nee
From: |
Peter Maydell |
Subject: |
Re: [PATCH-for-5.2? 1/2] tests/qtest: variable defined by g_autofree need to be initialized |
Date: |
Thu, 19 Nov 2020 08:38:53 +0000 |
On Thu, 19 Nov 2020 at 08:35, Chenqun (kuhn) <kuhn.chenqun@huawei.com> wrote:
>
> > -----Original Message-----
> > > static void tim_add_test(const char *name, const TestData *td,
> > > GTestDataFunc fn) {
> > > - g_autofree char *full_name;
> > > -
> > > - full_name = g_strdup_printf("npcm7xx_timer/tim[%d]/timer[%d]/%s",
> > > - tim_index(td->tim),
> > timer_index(td->timer),
> > > - name);
> > > + g_autofree char *full_name = g_strdup_printf(
> > > + "npcm7xx_timer/tim[%d]/timer[%d]/%s", tim_index(td->tim),
> > > + timer_index(td->timer), name);
> >
> > Which compiler is so unintelligent that it cannot see that a declaration
> > immediately followed by an assignment must always initialize the variable
> > ???
> >
> Hi Peter,
> Glib requires that all g_auto* macros must be initialized.
>
> https://developer.gnome.org/glib/stable/glib-Miscellaneous-Macros.html#g-autofree
Yes, and we initialize it with the "full_name = ..." line.
The g_autofree documentation says "this macro has similar constraints
as g_autoptr()", and the g_autoptr() documentation says
"You must initialise the variable in some way — either by use of an
initialiser or by ensuring that it is assigned to unconditionally
before it goes out of scope."
In this case the test code is doing the second of those two things.
thanks
-- PMM
[PATCH-for-5.2? 2/2] tests/qtest: fix memleak in npcm7xx_watchdog_timer-test, Chen Qun, 2020/11/18