-PList* plist_new(void) {
- PList* list = xmalloc(sizeof(*list));
- obstack_init(&list->obst);
- list->firstElement = NULL;
- list->lastElement = NULL;
- list->firstFreeElement = NULL;
- list->elementCount = 0;
+plist_t *plist_new(void)
+{
+ plist_t *list = (plist_t*) xmalloc(sizeof(*list) + sizeof(*list->obst));
+
+ list->obst = (struct obstack *)&list[1];
+ list->foreign_obstack = 0;
+ list->first_element = NULL;
+ list->last_element = NULL;
+ list->first_free_element = NULL;
+ list->element_count = 0;
+
+ obstack_init(list->obst);
+ return list;
+}
+
+plist_t *plist_obstack_new(struct obstack *obst)
+{
+ plist_t *list = OALLOC(obst, plist_t);
+
+ list->obst = obst;
+ list->foreign_obstack = 1;
+ list->first_element = NULL;
+ list->last_element = NULL;
+ list->first_free_element = NULL;
+ list->element_count = 0;
+