--- psiconv/trunk/lib/psiconv/list.c 2000/12/27 02:12:23 80 +++ psiconv/trunk/lib/psiconv/list.c 2003/11/25 17:57:05 168 @@ -22,11 +22,17 @@ #include "compat.h" #include #include +#include #include #include "general.h" #include "list.h" #include "error.h" +#ifdef DMALLOC +#include +#endif + + static int psiconv_list_resize(psiconv_list l,psiconv_u32 nr); struct psiconv_list_s { @@ -53,9 +59,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 +102,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)