lefantome
18-03-2010, 10:48
ho un problema nella prima parte. la funzione addElement ha come argomento la lista e ritorna un int.
typedef struct {
/** la testa della lista */
elem_t * head;
/** la funzione per confrontare due chiavi */
int (* compare) (void *, void *);
/** la funzione per copiare una chiave */
void * (* copyk) (void *);
/** la funzione per copiare un payload*/
void * (* copyp) (void *);
} list_t;
int add_ListElement(list_t * t,void * key, void* payload){
elem_t* p;
elem_t* new;
/* Crea il nuovo elemento*/
new = (elem_t*)malloc(sizeof( elem_t));
if (new == NULL){ return -1;} /* ritorna -1 se malloc fallisce*/
/*new->key = t->copyk(key);
new->payload = t->copyp(payload);*/
/* Scorre la lista per vedere se l'elemento è già presente*/
/*for (p = t->head; p !=NULL; p = p->next){
if (t->compare(p->key,key)==0){ return -1;}
}*/
new->next = t->head;
t->head = new;
return 0;
}
In pratica mi da segfault sia quando chiamo le funzioni dentro la struct.(copyk,copyp e compare)
Cioè sembra che mi possa usare solo una volta una delle funzioni puntate dentro la struct. Se provo a eseguirne una di esse un'altra volta da segfault WTF
:muro:
typedef struct {
/** la testa della lista */
elem_t * head;
/** la funzione per confrontare due chiavi */
int (* compare) (void *, void *);
/** la funzione per copiare una chiave */
void * (* copyk) (void *);
/** la funzione per copiare un payload*/
void * (* copyp) (void *);
} list_t;
int add_ListElement(list_t * t,void * key, void* payload){
elem_t* p;
elem_t* new;
/* Crea il nuovo elemento*/
new = (elem_t*)malloc(sizeof( elem_t));
if (new == NULL){ return -1;} /* ritorna -1 se malloc fallisce*/
/*new->key = t->copyk(key);
new->payload = t->copyp(payload);*/
/* Scorre la lista per vedere se l'elemento è già presente*/
/*for (p = t->head; p !=NULL; p = p->next){
if (t->compare(p->key,key)==0){ return -1;}
}*/
new->next = t->head;
t->head = new;
return 0;
}
In pratica mi da segfault sia quando chiamo le funzioni dentro la struct.(copyk,copyp e compare)
Cioè sembra che mi possa usare solo una volta una delle funzioni puntate dentro la struct. Se provo a eseguirne una di esse un'altra volta da segfault WTF
:muro: