[pacman-dev] alpm_list_count gives 1 on an list created by alpm_list_new

Nagy Gabor ngaba at bibl.u-szeged.hu
Sat Feb 23 14:36:24 EST 2008


> Yes, this is not nice, but needed (we doesn't have alpm_list_node_t or
> alpm_list_head_t  struct): list == NULL is not allowed [otherwise
> list->data or list->next would lead to a segfault.]
> Workaround: alpm_list_count could count nodes with not-NULL data
> pointers only.
> 
> Btw, this also indicates a more serious bug: as I see, if you remove
> the only element from a 1-element list, alpm_list_remove() will
> return with NULL, with is not a valid list pointer...
> 
> Bye

Correction of  myself: since we usually use
'for(i = list; i; i = i->next)',
i==NULL is acceptable.
So IMHO list = alpm_list_new() <=> list = NULL; would be better; and
rename the current alpm_list_new() to _internal_ alpm_list_node_new()
[used by alpm_list_add ...]. Then the hackish line 119 could also
disappear from alpm_list.c

Bye




More information about the pacman-dev mailing list