Hi On Thu, Nov 21, 2013 at 1:39 AM, Kristian Høgsberg <[email protected]> wrote: > The gcc built-in 'bool' type is not the same size as dbus_bool_t, which is > an uint32_t. Passing a pointer to bool where dbus expects a uint32_t * > doesn't work.
Nice catch! I hate dbus for that type.. happens to me all the time. Reviewed-by: David Herrmann <[email protected]> > --- > src/logind-util.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > David, > > This fixes a crash that Artie hit when testing this. Btw, did you get > a chance to update the logind error paths to return -1 and set errno > like we discussed? I tried that, but systemd and dbus both return negative error codes instead of errno+-1. So I have to change like 90 places to do: errno = -r; r = -1; I can do that, but I thought it looked ugly. As a compromise, I can only make the public logind-functions do that in the error-path? That would be only 5 places. Comments? Thanks David > diff --git a/src/logind-util.c b/src/logind-util.c > index 6bd0c26..a58265c 100644 > --- a/src/logind-util.c > +++ b/src/logind-util.c > @@ -69,8 +69,9 @@ weston_logind_take_device(struct weston_logind *wl, > uint32_t major, > uint32_t minor, bool *paused_out) > { > DBusMessage *m, *reply; > - bool b, paused; > + bool b; > int r, fd; > + dbus_bool_t paused; > > m = dbus_message_new_method_call("org.freedesktop.login1", > wl->spath, > @@ -287,7 +288,7 @@ get_active_cb(DBusPendingCall *pending, void *data) > DBusMessage *m; > DBusMessageIter iter, sub; > int type; > - bool b; > + dbus_bool_t b; > > dbus_pending_call_unref(wl->pending_active); > wl->pending_active = NULL; > -- > 1.8.3.1 > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
