[virt-tools-list] [PATCH] Fix virt_viewer_app_activate return value
Michal Privoznik
mprivozn at redhat.com
Fri Jun 15 07:19:25 UTC 2012
On 14.06.2012 18:29, Christophe Fergeau wrote:
> Hey,
>
> On Thu, Jun 14, 2012 at 05:06:06PM +0200, Michal Privoznik wrote:
>> The recent patch tried to fix return values
>> of this function. However, it resulted in swapped return values,
>> since if we were previously returning TRUE (1) we are now returning
>> FALSE (0). Fix this.
>
> I'm actually a bit confused with virt_viewer_app_activate semantics,
> if you look at virt_viewer_app_activate , it returns -1 on error, but
> when you look at virt-viewer.c:515 (which you pointed me at), the code is:
>
>
> ret = virt_viewer_update_display(self, dom);
> if (ret >= 0)
> ret = VIRT_VIEWER_APP_CLASS(virt_viewer_parent_class)->initial_connect(app);
> if (ret < 0) {
> if (priv->waitvm) {
> virt_viewer_app_show_status(app, _("Waiting for guest domain to start server"));
> virt_viewer_app_trace(app, "Guest %s has not activated its display yet, waiting for it to start\n",
> priv->domkey);
> } else {
> DEBUG_LOG("Failed to activate viewer");
> goto cleanup;
> }
> } else if (ret == 0) {
> DEBUG_LOG("Failed to activate viewer");
> ret = -1;
> goto cleanup;
> }
>
> (initial_connect is the same as activate in the VirtViewerApp class)
>
> which handles both -1 and 0 as errors, so maybe the initial code was correct ?
It was indeed. That piece of code you are showing here is kind of messy
because it misuse ret variable a lot. Firstly,
virt_viewer_update_display returns a tri-state value, where anything
non-negative is TRUE, but initial_connect (which is
virt_viewer_app_default_activate in fact) returns a boolean value where
zero is suddenly FALSE.
So self-NAK as we need to cleanup this code in the first place.
Michal
More information about the virt-tools-list
mailing list