DBusGMethodInvocation is null on i386, works on x86_64

Braden McDaniel braden at endoframe.com
Fri Oct 24 10:08:03 PDT 2008


On Fri, 2008-10-24 at 12:27 +0100, Simon McVittie wrote:
> On Fri, 24 Oct 2008 at 02:56:16 -0400, Braden McDaniel wrote:
> > I'm observing a situation where the DBusGMethodInvocation pointer passed
> > to the implementation of a remote call is null on i386; but the same
> > code works as expected on x86_64.
> > 
> > I have the following XML:
> > 
> >         <node name="/org/openvrml/BrowserFactory">
> >           <interface name="org.openvrml.BrowserFactory">
> >             <method name="CreateControl">
> >               <annotation name="org.freedesktop.DBus.GLib.Async" value="true" />
> >               <arg type="s" name="host_name" direction="in" />
> >               <arg type="o" name="host_object_path" direction="in" />
> >               <arg type="t" name="host_id" direction="in" />
> 
> This is a 64-bit unsigned integer...
> 
> >               <arg type="b" name="expect_initial_stream" direction="in" />
> >               <arg type="o" direction="out">
> >                 <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value=""/>
> >               </arg>
> >             </method>
> >           </interface>
> >         </node>
> 
> >         gboolean
> >         openvrml_xembed_browser_factory_create_control(
> >             OpenvrmlXembedBrowserFactory * control_factory,
> >             const char * host_name,
> >             const char * host_obj_path,
> >             guint host_id,
> 
> but this is the same size as an int, so on platforms with 32-bit int, your
> arguments are misaligned.

Argh.  Right you are.  I changed the type from 32- to 64-bit everywhere
else but I've been looking right past that instance.

Thanks.

-- 
Braden McDaniel                           e-mail: <braden at endoframe.com>
<http://endoframe.com>                    Jabber: <braden at jabber.org>




More information about the dbus mailing list