/* this is essentially identical to AllocPDAList. I should combine
* the two. when we have to call calloc, we do it one component at a
* time to simplify the process of freeing the list at program
* shutdown. This should not be much of a performance hit, because it
* should be very infrequently executed. */