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