void insert_list (list_ref list, list_item item) { listnode_ref newnode = malloc (sizeof (struct listnode)); assert (is_list (list)); newnode->tag = listnode_tag; newnode->item = item; newnode->next = list->curr->next; newnode->prev = list->curr; list->curr->next = newnode; if (newnode->next != NULL) newnode->next->prev = newnode; else list->last = newnode; list->curr = newnode; }