BRIGADE_NORMALIZE skips the bucket after a 0-length bucket. In doing so, it might skip a 0-length bucket following it. If the last
IMHO, the cleanest correct fix is to just add an else clause. At the cost of more variables, you could always use d and forgo the else clause, but I think that'll just confuse readers of the macro even more. We also can't accept C99 extensions. *shrug*
We probably never hit this odd corner case in practice though because core_input_filter only has one of the following: one empty bucket, one socket bucket, one heap bucket, or a heap and a socket bucket: two empty buckets won't happen due to the design. FWIW, BRIGADE_NORMALIZE was thrown out of apr-util because it was really bad to begin with: hence the comment ("This is bad.") and the localization of it to only server/core.c. It was never meant to be an example - yet, this is a minor bug more than anything serious. -- justin