X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fq.c;h=989c47f4993984c37d5b784886ff34b58139a7fd;hp=543d5795760ff9f76702105485d74bf420863881;hb=f0a3da08874dcfae2f3180559b208f6726702e6a;hpb=2f5439b70a9b86a51b629efe0c9ae7f4bda00107 diff --git a/lib/q.c b/lib/q.c index 543d579..989c47f 100644 --- a/lib/q.c +++ b/lib/q.c @@ -987,7 +987,7 @@ void list_append_(void*_list, void*entry) commonlist_t**list = (commonlist_t**)_list; commonlist_t* n = 0; if(!*list) { - n = malloc(sizeof(commonlist_t)+sizeof(listinfo_t)); + n = (commonlist_t*)malloc(sizeof(commonlist_t)+sizeof(listinfo_t)); *list = n; (*list)->info[0].size = 0; } else { @@ -999,6 +999,23 @@ void list_append_(void*_list, void*entry) (*list)->info[0].last = n; (*list)->info[0].size++; } +/* notice: prepending uses slighly more space than appending */ +void list_prepend_(void*_list, void*entry) +{ + commonlist_t**list = (commonlist_t**)_list; + commonlist_t* n = (commonlist_t*)malloc(sizeof(commonlist_t)+sizeof(listinfo_t)); + int size = 0; + commonlist_t* last = 0; + if(*list) { + last = (*list)->info[0].last; + size = (*list)->info[0].size; + } + n->next = *list; + n->entry = entry; + *list = n; + (*list)->info[0].last = last; + (*list)->info[0].size = size+1; +} void list_free_(void*_list) { commonlist_t**list = (commonlist_t**)_list;