diff mbox series

qom/object: Comment to use g_slist_free on object_class_get_list result

Message ID 20200227190942.8834-1-philmd@redhat.com (mailing list archive)
State New, archived
Headers show
Series qom/object: Comment to use g_slist_free on object_class_get_list result | expand

Commit Message

Philippe Mathieu-Daudé Feb. 27, 2020, 7:09 p.m. UTC
Document the list returned by object_class_get_list() must be
released with g_slist_free() to avoid memory leaks.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/qom/object.h | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Daniel P. Berrangé Feb. 28, 2020, 9:46 a.m. UTC | #1
On Thu, Feb 27, 2020 at 08:09:42PM +0100, Philippe Mathieu-Daudé wrote:
> Document the list returned by object_class_get_list() must be
> released with g_slist_free() to avoid memory leaks.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  include/qom/object.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/include/qom/object.h b/include/qom/object.h
> index 29546496c1..5517b56508 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -984,6 +984,9 @@ void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
>   * @include_abstract: Whether to include abstract classes.
>   *
>   * Returns: A singly-linked list of the classes in reverse hashtable order.
> + *
> + * The returned list must be released with g_slist_free()
> + * when no longer required.

I'd suggest

  "The returned list, but not its elements, must be released with
   g_slist_free() or g_autoptr when no longer required"

>   */
>  GSList *object_class_get_list(const char *implements_type,
>                                bool include_abstract);
> @@ -995,6 +998,9 @@ GSList *object_class_get_list(const char *implements_type,
>   *
>   * Returns: A singly-linked list of the classes in alphabetical
>   * case-insensitive order.
> + *
> + * The returned list must be released with g_slist_free()
> + * when no longer required.
>   */
>  GSList *object_class_get_list_sorted(const char *implements_type,
>                                bool include_abstract);
> -- 
> 2.21.1
> 
> 

Regards,
Daniel
Marc-André Lureau Feb. 28, 2020, 10:06 a.m. UTC | #2
Hi

On Fri, Feb 28, 2020 at 10:47 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Thu, Feb 27, 2020 at 08:09:42PM +0100, Philippe Mathieu-Daudé wrote:
> > Document the list returned by object_class_get_list() must be
> > released with g_slist_free() to avoid memory leaks.
> >
> > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > ---
> >  include/qom/object.h | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/include/qom/object.h b/include/qom/object.h
> > index 29546496c1..5517b56508 100644
> > --- a/include/qom/object.h
> > +++ b/include/qom/object.h
> > @@ -984,6 +984,9 @@ void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
> >   * @include_abstract: Whether to include abstract classes.
> >   *
> >   * Returns: A singly-linked list of the classes in reverse hashtable order.
> > + *
> > + * The returned list must be released with g_slist_free()
> > + * when no longer required.
>
> I'd suggest
>
>   "The returned list, but not its elements, must be released with
>    g_slist_free() or g_autoptr when no longer required"

As gobject-introspection annotations: "Returns: (transfer container)
(element-type ObjectClass): A list of #ObjectClass"

>
> >   */
> >  GSList *object_class_get_list(const char *implements_type,
> >                                bool include_abstract);
> > @@ -995,6 +998,9 @@ GSList *object_class_get_list(const char *implements_type,
> >   *
> >   * Returns: A singly-linked list of the classes in alphabetical
> >   * case-insensitive order.
> > + *
> > + * The returned list must be released with g_slist_free()
> > + * when no longer required.
> >   */
> >  GSList *object_class_get_list_sorted(const char *implements_type,
> >                                bool include_abstract);
> > --
> > 2.21.1
> >
> >
>
> Regards,
> Daniel
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>
>
Philippe Mathieu-Daudé Feb. 28, 2020, 10:08 a.m. UTC | #3
On 2/28/20 11:06 AM, Marc-André Lureau wrote:
> Hi
> 
> On Fri, Feb 28, 2020 at 10:47 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
>>
>> On Thu, Feb 27, 2020 at 08:09:42PM +0100, Philippe Mathieu-Daudé wrote:
>>> Document the list returned by object_class_get_list() must be
>>> released with g_slist_free() to avoid memory leaks.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>>   include/qom/object.h | 6 ++++++
>>>   1 file changed, 6 insertions(+)
>>>
>>> diff --git a/include/qom/object.h b/include/qom/object.h
>>> index 29546496c1..5517b56508 100644
>>> --- a/include/qom/object.h
>>> +++ b/include/qom/object.h
>>> @@ -984,6 +984,9 @@ void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
>>>    * @include_abstract: Whether to include abstract classes.
>>>    *
>>>    * Returns: A singly-linked list of the classes in reverse hashtable order.
>>> + *
>>> + * The returned list must be released with g_slist_free()
>>> + * when no longer required.
>>
>> I'd suggest
>>
>>    "The returned list, but not its elements, must be released with
>>     g_slist_free() or g_autoptr when no longer required"
> 
> As gobject-introspection annotations: "Returns: (transfer container)
> (element-type ObjectClass): A list of #ObjectClass"

Are you suggesting to replace "Returns: A singly-linked list of the 
classes in reverse hashtable order." by the line you quoted?

> 
>>
>>>    */
>>>   GSList *object_class_get_list(const char *implements_type,
>>>                                 bool include_abstract);
>>> @@ -995,6 +998,9 @@ GSList *object_class_get_list(const char *implements_type,
>>>    *
>>>    * Returns: A singly-linked list of the classes in alphabetical
>>>    * case-insensitive order.
>>> + *
>>> + * The returned list must be released with g_slist_free()
>>> + * when no longer required.
>>>    */
>>>   GSList *object_class_get_list_sorted(const char *implements_type,
>>>                                 bool include_abstract);
>>> --
>>> 2.21.1
>>>
>>>
>>
>> Regards,
>> Daniel
>> --
>> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>>
>>
> 
>
Daniel P. Berrangé Feb. 28, 2020, 10:35 a.m. UTC | #4
On Fri, Feb 28, 2020 at 11:06:38AM +0100, Marc-André Lureau wrote:
> Hi
> 
> On Fri, Feb 28, 2020 at 10:47 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Thu, Feb 27, 2020 at 08:09:42PM +0100, Philippe Mathieu-Daudé wrote:
> > > Document the list returned by object_class_get_list() must be
> > > released with g_slist_free() to avoid memory leaks.
> > >
> > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> > > ---
> > >  include/qom/object.h | 6 ++++++
> > >  1 file changed, 6 insertions(+)
> > >
> > > diff --git a/include/qom/object.h b/include/qom/object.h
> > > index 29546496c1..5517b56508 100644
> > > --- a/include/qom/object.h
> > > +++ b/include/qom/object.h
> > > @@ -984,6 +984,9 @@ void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
> > >   * @include_abstract: Whether to include abstract classes.
> > >   *
> > >   * Returns: A singly-linked list of the classes in reverse hashtable order.
> > > + *
> > > + * The returned list must be released with g_slist_free()
> > > + * when no longer required.
> >
> > I'd suggest
> >
> >   "The returned list, but not its elements, must be released with
> >    g_slist_free() or g_autoptr when no longer required"
> 
> As gobject-introspection annotations: "Returns: (transfer container)
> (element-type ObjectClass): A list of #ObjectClass"

If we were using Gobject introspection and/or Gtk-Doc, then I'd certainly
suggest that syntax, but AFAIK this is not something that fits with our
intented docs tools. There might be sense in having our docs tools parse
these kind of annotations as it is useful to have it in standardized
format. I think we should decide on this before actually adding them to
the docs though.

Regards,
Daniel
Marc-André Lureau Feb. 28, 2020, 10:35 a.m. UTC | #5
Hi

On Fri, Feb 28, 2020 at 11:09 AM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> On 2/28/20 11:06 AM, Marc-André Lureau wrote:
> > Hi
> >
> > On Fri, Feb 28, 2020 at 10:47 AM Daniel P. Berrangé <berrange@redhat.com> wrote:
> >>
> >> On Thu, Feb 27, 2020 at 08:09:42PM +0100, Philippe Mathieu-Daudé wrote:
> >>> Document the list returned by object_class_get_list() must be
> >>> released with g_slist_free() to avoid memory leaks.
> >>>
> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>> ---
> >>>   include/qom/object.h | 6 ++++++
> >>>   1 file changed, 6 insertions(+)
> >>>
> >>> diff --git a/include/qom/object.h b/include/qom/object.h
> >>> index 29546496c1..5517b56508 100644
> >>> --- a/include/qom/object.h
> >>> +++ b/include/qom/object.h
> >>> @@ -984,6 +984,9 @@ void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
> >>>    * @include_abstract: Whether to include abstract classes.
> >>>    *
> >>>    * Returns: A singly-linked list of the classes in reverse hashtable order.
> >>> + *
> >>> + * The returned list must be released with g_slist_free()
> >>> + * when no longer required.
> >>
> >> I'd suggest
> >>
> >>    "The returned list, but not its elements, must be released with
> >>     g_slist_free() or g_autoptr when no longer required"
> >
> > As gobject-introspection annotations: "Returns: (transfer container)
> > (element-type ObjectClass): A list of #ObjectClass"
>
> Are you suggesting to replace "Returns: A singly-linked list of the
> classes in reverse hashtable order." by the line you quoted?

No, just a remark. I doubt this is compatible with kernel-doc at this
point, and we are not using GI.

fwiw, I don't think "in reverse hashtable order" is really meaningful anyway.

>
> >
> >>
> >>>    */
> >>>   GSList *object_class_get_list(const char *implements_type,
> >>>                                 bool include_abstract);
> >>> @@ -995,6 +998,9 @@ GSList *object_class_get_list(const char *implements_type,
> >>>    *
> >>>    * Returns: A singly-linked list of the classes in alphabetical
> >>>    * case-insensitive order.
> >>> + *
> >>> + * The returned list must be released with g_slist_free()
> >>> + * when no longer required.
> >>>    */
> >>>   GSList *object_class_get_list_sorted(const char *implements_type,
> >>>                                 bool include_abstract);
> >>> --
> >>> 2.21.1
> >>>
> >>>
> >>
> >> Regards,
> >> Daniel
> >> --
> >> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> >> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> >> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
> >>
> >>
> >
> >
>
diff mbox series

Patch

diff --git a/include/qom/object.h b/include/qom/object.h
index 29546496c1..5517b56508 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -984,6 +984,9 @@  void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
  * @include_abstract: Whether to include abstract classes.
  *
  * Returns: A singly-linked list of the classes in reverse hashtable order.
+ *
+ * The returned list must be released with g_slist_free()
+ * when no longer required.
  */
 GSList *object_class_get_list(const char *implements_type,
                               bool include_abstract);
@@ -995,6 +998,9 @@  GSList *object_class_get_list(const char *implements_type,
  *
  * Returns: A singly-linked list of the classes in alphabetical
  * case-insensitive order.
+ *
+ * The returned list must be released with g_slist_free()
+ * when no longer required.
  */
 GSList *object_class_get_list_sorted(const char *implements_type,
                               bool include_abstract);