Skip to content
  • Owen W. Taylor's avatar
    GDBusInterfaceVTable: clarify memory handling for the method() virtual function · 66fc112c
    Owen W. Taylor authored
    There are two consistent interpretations that could be taken for memory
    handling of the 'invocation' parameter passed to the method_call() virtual
    function of GDBusInterfaceVTable
    
     - A reference is passed (transfer full) to the method_call() virtual function,
       and that reference is then passed (transfer full) to the return_value/error
       functions on GDBusMethodInvocation.
     - An internal reference is retained from the point where method_call() is called
       until the return_value/error function is called.
    
    Since the return_value/error functions were already marked (transfer full),
    we use the first interpretation, annotate the invocation parameter of
    method call as (transfer full) and describe this in the documentation, along
    with the idea that you are always supposed to call one of the return_value/error
    functions.
    
    See bug 738122 for the leak this caused in GJS.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=738259
    66fc112c