question ong_list_insert_sorted usage
John Wendel
john.wendel at metnet.navy.mil
Thu Jun 22 23:50:12 UTC 2006
Globe Trotter wrote:
> Hi,
>
> OK, I know this is not a list for this question, but I have posted on the GTK
> list, but that is very low volume, and the answer is killing me. So, I
> apologize for this question, but after struggling with this for over a day, I
> wanted to ask you for your help regarding usage for g_list_insert_sorted. Can
> someone please help. Here are the operative parts of my program:
>
> I have the following struct:
>
> typedef struct _message_info
> {
> char *from;
> char *subject;
> char *face;
> long *ctime;
> } MESSAGE_INFO;
>
> I have the following comparison function:
>
> static gint compare_ctime (gconstpointer a, gconstpointer b)
> {
> const MESSAGE_INFO *p1=a,*p2=b;
>
> return ((p1->ctime > p2->ctime) ? +1: (p1->ctime == p2->ctime) ? 0 : -1);
> }
>
> and the following calling part:
>
> Glist *headers;
> .....
> MESSAGE_INFO *m;
> m = g_new(MESSAGE_INFO,1);
> m->from = safe_strdup (from);
> m->subject = safe_strdup (subject);
> m->face = safe_strdup (xface);
> m->ctime = ctime;
> headers = g_list_insert_sorted (headers, m,(GCompareFunc)compare_ctime);
> ....
>
> I get segmentation fault with this, and was wondering how I could fix it. I
> guess my question is how to use g_list_insert_sorted.
>
> I have Googled quite a bit on this, but have not been able to devise the fix.
> This is a programming error, I think, based on my inadequate knowledge. Any
> help would be very appreciated.
>
> Many thanks and best wishes,
> trotter
DISCLAIMER: I don't know what I'm writing about!
"m->ctime = ctime;" looks suspect. I don't see the definition of
"ctime" in your code fragment, but it looks like you're assigning a
long to a pointer.
Either in MESSAGE_INFO ctime should be declared "long ctime" or the
assignment should be m->ctime = & ctime;
Hope this isn't totally off base.
Regards,
John
More information about the users
mailing list