[virt-tools-list] [virt-viewer PATCH] Fix building with older spice-gtk

Martin Kletzander mkletzan at redhat.com
Thu Mar 13 10:37:03 UTC 2014


On Thu, Mar 13, 2014 at 10:49:47AM +0100, Christophe Fergeau wrote:
> Hey,
>
> On Thu, Mar 13, 2014 at 10:16:08AM +0100, Martin Kletzander wrote:
> > Due to spice-gtk-0.23 missing SPICE_GTK_CHECK_VERSION macro, the
> > condition:
> >
> > causes the following error due to gcc not doing short-circuit evaluation:
>
> It should be doing short-circuit evaluation:
> http://gcc.gnu.org/onlinedocs/cpp/If.html
> Maybe what happens is that it starts by doing macro substitution, and then
> will evaluate the boolean expression, but it fails at doing so because the
> expanded expression is invalid.
>

I jumped to a conclusion without really investigating.  Your
explanation makes more sense now.  Sorry and thanks for clarifying.

> >
> > virt-viewer-session-spice.c: In function 'virt_viewer_session_spice_main_channel_event':
> > virt-viewer-session-spice.c:525:64: error: missing binary operator before token "("
> >  #if defined(SPICE_GTK_CHECK_VERSION) && SPICE_GTK_CHECK_VERSION(0, 23, 21)
> >                                                                 ^
> > Also one more warning is fixed in this patch:
> >
> > virt-viewer-session-spice.c:476:19: warning: unused variable 'error'
> > [-Wunused-variable] const GError *error;
> >                                   ^
> >
> > Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> > ---
> >  src/virt-viewer-session-spice.c | 14 ++++++++++----
> >  1 file changed, 10 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c
> > index 1740ba3..fb63c9c 100644
> > --- a/src/virt-viewer-session-spice.c
> > +++ b/src/virt-viewer-session-spice.c
> > @@ -1,7 +1,7 @@
> >  /*
> >   * Virt Viewer: A virtual machine console viewer
> >   *
> > - * Copyright (C) 2007-2012 Red Hat, Inc.
> > + * Copyright (C) 2007-2012, 2014 Red Hat, Inc.
> >   * Copyright (C) 2009-2012 Daniel P. Berrange
> >   * Copyright (C) 2010 Marc-André Lureau
> >   *
> > @@ -473,7 +473,6 @@ virt_viewer_session_spice_main_channel_event(SpiceChannel *channel G_GNUC_UNUSED
> >                                               SpiceChannelEvent event,
> >                                               VirtViewerSession *session)
> >  {
> > -    const GError *error;
> >      VirtViewerSessionSpice *self = VIRT_VIEWER_SESSION_SPICE(session);
> >      gchar *password = NULL, *user = NULL;
> >      int ret;
> > @@ -522,8 +521,10 @@ virt_viewer_session_spice_main_channel_event(SpiceChannel *channel G_GNUC_UNUSED
> >          }
> >          break;
> >      case SPICE_CHANNEL_ERROR_CONNECT:
> > -#if defined(SPICE_GTK_CHECK_VERSION) && SPICE_GTK_CHECK_VERSION(0, 23, 21)
> > -        error = spice_channel_get_error(channel);
> > +#if defined(SPICE_GTK_CHECK_VERSION)
> > +# if SPICE_GTK_CHECK_VERSION(0, 23, 21)
>
> An alternative with less clutter here could be
> #ifndef SPICE_GTK_CHECK_VERSION
> #define SPICE_GTK_CHECK_VERSION(x, y, z) 0
> #endif
>
> at the top of the file, but ACK to the way you did it
>

That look *way* better, yes.

> > +    {
> > +        const GError *error = spice_channel_get_error(channel);
> >
> >          DEBUG_LOG("main channel: failed to connect %s", error ? error->message : "");
> >
> > @@ -545,6 +546,11 @@ virt_viewer_session_spice_main_channel_event(SpiceChannel *channel G_GNUC_UNUSED
> >          } else {
> >              g_signal_emit_by_name(session, "session-disconnected");
> >          }
> > +    }
>
>
>
> > +# else
> > +        DEBUG_LOG("main channel: failed to connect");
> > +        g_signal_emit_by_name(session, "session-disconnected");
> > +# endif
> >  #else
> >          DEBUG_LOG("main channel: failed to connect");
> >          g_signal_emit_by_name(session, "session-disconnected");
>
> This part of the patch is dubious, I'd expect this bit to be unchanged
>

Which it can be if we do the ifndef->define variant.

v2 coming up, thanks for he review.

Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20140313/31db7762/attachment.sig>


More information about the virt-tools-list mailing list