Okay, I think I found the problem.

I think this is a bug in the "is_env()" function in glib2.0 file
gdesktopappinfo.c.

I will be providing a patch shortly once I have tested it locally.

Basically what's happening is the environment passed to the spawned
process has 2 "DISPLAY=" lines, one with "DISPLAY=:0.0" and another with
"DISPLAY=:0.1".

The is_env() function as written is CLEARLY wrong.

Untested version of the new fix:

/* '=' is the new '\0'.
 * DO NOT CALL unless at least one string ends with '='
 */
static gboolean
is_env (const char *a,
        const char *b)
{
  while (*a == *b)
  {
    if (*a == '=' && *b == 0) /* return true if at end of b and a is on =. */
      return TRUE;

    if (*a == '=' || *a == 0 || *b == 0) /* otherwise return if at the end of 
either string. */
      return FALSE;

    a++;
    b++;
  }

  return FALSE;
}

The old version would bomb out with FALSE if *a==0 || *b==0, but the
actual correct TRUE case (shown above) is (*a == '=' and *b == 0).

-- 
menu items selected from screen 1 open on screen 0
https://bugs.launchpad.net/bugs/346964
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to