Re: Glib problem: trying to use gpointer pointing to a structure in a GList. Getting segfault
- From: John Cupitt <john cupitt ng-london org uk>
- To: Lucas Brasilino <brasilino recife pe gov br>
- Cc: gtk-list gnome org
- Subject: Re: Glib problem: trying to use gpointer pointing to a structure in a GList. Getting segfault
- Date: Fri, 08 Aug 2003 14:35:16 +0000
Hi, you're not allocating a record anywhere, you've just declared a pointer to one and not initialised it. Also, g_strdup() will save you a little code.
John
Lucas Brasilino wrote:
#include <stdio.h>
#include <string.h>
#include <glib.h>
int main(int argc, char **argv)
{
GList *dlist = NULL, *list = NULL;
guint length,i;
struct {
guint index;
gchar *data;
} *record;
I'd do
typedef struct _Record {
int index;
char *data;
} Record;
Record *rp;
record->data = g_malloc(strlen("Lucas")+1);Lucas"
g_strlcpy(record->data,"Lucas",strlen("Lucas")+1);
dlist = g_list_append(dlist, record);
here do:
rp = g_new( Record, 1 );
rp->index = 0;
rp->date = g_strdup( "Lucas" );
dlist = g_list_append( dlist, rp );
record->data = g_malloc(strlen("Brasilino")+1);
g_strlcpy(record->data,"Brasilino", strlen("Brasilino")+1);
dlist = g_list_append(dlist, record);
same here
length = g_list_length(dlist);
g_printf("%d \n",length);
record = NULL;g_list_first(dlist)
list = g_list_first(dlist);
while(list)
{
record = list->data;
g_print("%s\n",record->data);
list = list->next;
And change these to:
rp = (Record *) list->data;
printf( "index = %d, name = \"%s\"\n", rp->index, rp->data );
list = list->next;
You could change the loop to:
for( list = g_list_first( dlist ); list; list = list->next ) {
rp = (Record *) list->data;
printf( "index = %d, name = \"%s\"\n", rp->index, rp->data );
}
which is slightly easier to read
}
}
================
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]