--- psiconv/trunk/lib/psiconv/list.c 2000/12/27 02:12:23 80 +++ psiconv/trunk/lib/psiconv/list.c 2002/01/28 21:04:05 141 @@ -53,9 +53,8 @@ { if (l->max_len) free(l->els); - l->max_len = 0; - l->cur_len = 0; - l->els = NULL; + free(l); + l = NULL; } void psiconv_list_free_el(psiconv_list l, void free_el(void *el)) @@ -97,6 +96,15 @@ return 0; } +int psiconv_list_pop(psiconv_list l, void *el) +{ + if (! l->cur_len) + return -PSICONV_E_OTHER; + l->cur_len --; + memcpy(el,((char *)(l->els)) + l->cur_len * l->el_size,l->el_size); + return -PSICONV_E_OK; +} + int psiconv_list_replace(psiconv_list l, psiconv_u32 indx, const void *el) { if (indx >= l->cur_len)