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