On Mon, 24 Sep 2001, Ryan Bloom wrote: > > void apr_bucket_free(void *ptr, int list); > > > > But that means it'll be tricky to support the b->free(b) thing that > > FirstBill requested. It was nice and clean with SMS (grumble), since the > > function to use and the particular instance to be freed (and knowledge of > > its parent) were tied together as b->sms... any ideas? I suppose we could > > wrap free() with some other function in order to discard the extra > > parameter for those bucket types that might still want to use malloc/free > > directly... ugh. > > Why not just put the list number in the bucket itself?
It already is. It's also in the apr_bucket_file/mmap/etc's so that file_destroy, mmap_destroy, etc, can work. Remember that I'm trying to use apr_bucket_alloc and apr_bucket_free to handle the apr_bucket_file/mmap/etc's as well as just the apr_bucket's. So unless the list number is at the same offset in apr_bucket_file and apr_bucket_mmap et al as it is in apr_bucket (which it almost certainly won't be), you can't just do this: void apr_bucket_free(void *ptr) { apr_bucket *b = ptr; free_the_damned_thing(b, b->list); } Because b->list will point to the wrong spot in the thing pointed to by ptr. --Cliff -------------------------------------------------------------- Cliff Woolley [EMAIL PROTECTED] Charlottesville, VA