Re: question ong_list_insert_sorted usage

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

 




--- John Wendel <john.wendel@xxxxxxxxxxxxxxx> wrote:

> 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
> 

Thanks, John! You are not at all off base, I actually pass ctime as a pointer
in a function, and I neglected to include that in my snippet. 

Removing the pointer also gives me no respite.

Many thanks!
Trotter

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux