Bill, The freeing & allocating looks right to me - thought of a couple of things to check, though. 1) make sure that in the get_bd function, patch->next=NULL; 2) ususally when I get Bus Errors, it's because I pass an address of a pointer instead of a pointer or I've declared the pointer type wrong at one side or the other of the function call. -Bill B.