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

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

-- PMM

Reply via email to