Re: trying to track down memo-file conduit bug



On Tue, 26 Aug 2003 13:28:15 +0100, Matt Davey wrote:
> Hi,

> I'm new to the list, having tuned in while trying to track down the
> memo-file conduit bug.

> I believe the problem lies in the construction of the gtk_signals in
> the file gnome-pilot-conduit-standard-abs.c

> In this file, several non-standard signal handlers are defined, using
> the old gtk-1 GtkSignalMarshaller signatures.  There are compiler
> warnings on compilation:
> -----------
> gnome-pilot-conduit-standard-abs.c: In function 
> `gnome_pilot_conduit_standard_abs_class_init':
> gnome-pilot-conduit-standard-abs.c:243: warning: passing arg 5 of 
> `gtk_signal_new' from incompatible
>  pointer type
> -----------

> What happens is that when the conduit fires the signal, it can't call
> the signal handler correctly, and goes awol (SIGILL on my machine).
> 
> gnome-pilot-conduit-standard-abs.c hasn't been updated to
> gtk-2.  The GtkSignalMarshaller type has changed.  In gtk-2 it is
> typedefed to be of type "GClosureMarshal", which has a quite
different
> signature to the gtk-1 GtkSignalMarshaller.

Glad someone else thought of the same thing as I did :)
I've done a few bactraces on the core files, and I usually just get 1
function without a name listed. Once, though, a second function (called
before the unnamed function) was listed, and it referred to the code
that contains the marshallers in gnome-pilot.

> memo-file-conduit is the only conduit (in my small collection) that
> uses gnome_pilot_conduit_standard_abs_*, which is why the problem
> seems to be restricted to the memo-file conduit.

The EAddress (and ECalendar, too, I think) conduit uses it. I saw that
neither connected a signal with the delete_all or match_record, 2
signals that I know are failing. The pre_sync signal doesn't fail,
though.

> I know next to nothing about gtk hacking, but I could have a go at
> fixing this stuff if People Who Know Everything are too busy. 
There's
> a command-line utility in glib-2 (on RH-9) called glib-genmarshal
> that can generate code for the signal marshallers, so with that
> and an #ifdef or two to switch between glib-1 and glib-2 it
> shouldn't be too tricky.

I've been looking at this, too, and probably know about as much as you
about GTK. I took a look at Evolution's way of creating the marshallers
and they have a script that'll do it (it's new, as of late July, I
think). I haven't had time to test it out on gnome-pilot yet, but
hopefully will tonight or tomorrow.

Anyone else looking into this?

Nathan Owens



__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]