Am Do., 9. Juli 2026 um 10:58 Uhr schrieb Peter Maydell
<[email protected]>:
>
> On Thu, 9 Jul 2026 at 09:53, Alexander Mikhalitsyn
> <[email protected]> wrote:
> >
> > Am Do., 9. Juli 2026 um 10:51 Uhr schrieb Peter Maydell
> > <[email protected]>:
> > >
> > > On Thu, 9 Jul 2026 at 09:47, Alexander Mikhalitsyn
> > > <[email protected]> wrote:
> > > >
> > > > From: Alexander Mikhalitsyn <[email protected]>
> > > >
> > > > Let's use GPtrArray to build a list of blocker features and then
> > > > g_strjoinv() to build a final comma-delimited string.
> > > >
> > > > While previous approach was technically correct, it is fragile
> > > > (because we need to take care of static buffer size choice) and
> > > > Coverity dislikes it too.
> > > >
> > > > Note, that we use g_ptr_array_new() to allocate array which means
> > > > that GDestroyNotify callback is not set, so we can pass pointers to
> > > > a static memory like g_ptr_array_add(..., (gpointer) "SR-IOV") without
> > > > any problems as there won't be any attempt to free that memory.
> > > >
> > > > Resolves: Coverity CID 1663673
> > > > Suggested-by: Peter Maydell <[email protected]>
> > > > Signed-off-by: Alexander Mikhalitsyn 
> > > > <[email protected]>
> > > > ---
>
> > > > @@ -9416,15 +9405,15 @@ static bool 
> > > > nvme_set_migration_blockers(NvmeCtrl *n, PCIDevice *pci_dev,
> > > >              }
> > > >
> > > >              if (namespaces_num > 1) {
> > > > -                nvme_add_blocker_feature(blocker_features,
> > > > -                                         "Namespace Attachment");
> > > > +                g_ptr_array_add(blocker_features,
> > > > +                                         (gpointer) "Namespace 
> > > > Attachment");
> > >
> >
> > Hi Peter,
> >
> > > Is the cast here because we're dropping the const property of the
> > > literal string?
> >
> > yep.
>
> Mmm. Unfortunate but unavoidable I guess.
>
> The glib docs recommend using "void *" instead of "gpointer" in
> new code: https://docs.gtk.org/glib/types.html#gpointer
> but either way

ah, I didn't know that. My first intention was to use "void *", but
then I searched over QEMU codebase
and found a few gpointer casts in exact use-case (with g_ptr_array_add).

I can correct this and resend if you want ;)

>
> Reviewed-by: Peter Maydell <[email protected]>
>
> -- PMM

Reply via email to