Re: [PATCH spice-gtk 1/4] gio-coroutine: Fix C inheritance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 13, 2018 at 03:49:16PM +0100, Frediano Ziglio wrote:
> GConditionWaitSource should inherit from GSource so GSource
> should be the first field.

Good catch, however what is interesting is why this worked so far
without issues,
GSource is
struct _GSource
{
  /*< private >*/
  gpointer callback_data;
  ...
};

With GSource being opaque, the only thing which could cause issues
was modifying GConditionWaitSource::self.
However, GConditionWaitSource::self is precisely what we use as
callback_data, and anyway the GSource probably sets callback_data after
spice-gtk set GConditiionWaitSource::self. So this ends up all working
even though this is wrong.

Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> but I'd add more
details to the log

Christophe



> 
> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
> ---
>  src/gio-coroutine.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/gio-coroutine.c b/src/gio-coroutine.c
> index c866e15..1322f01 100644
> --- a/src/gio-coroutine.c
> +++ b/src/gio-coroutine.c
> @@ -24,8 +24,8 @@
>  
>  typedef struct _GConditionWaitSource
>  {
> +    GSource parent; // this MUST be the first field
>      GCoroutine *self;
> -    GSource src;
>      GConditionWaitFunc func;
>      gpointer data;
>  } GConditionWaitSource;
> -- 
> 2.14.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/spice-devel

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]