On 5 February 2010 18:19, Matteo Bruni <matteo.myst...@gmail.com> wrote: > Sure. Better to go with something like "len = len < (desc->size - > desc->pos) ? len : desc->size - desc->pos" or creating a "min" > function? > min and max are already defined in windef.h. Note that they're not safe for expressions with side-effects, but for simple expressions like the one here they're ok.
>> I don't think it's very nice to have the HeapAlloc() and HeapFree() on >> different levels of the code like that. I.e., either have both in >> wpp_open_mem()/wpp_close_mem() or have both in the caller. The current >> scheme has the allocation in the caller and the deallocation in >> wpp_close_mem(), except sometimes when wpp_parse() fails to call >> wpp_close_mem(). (Can that even happen? Looking at the source of >> wpp_parse() it's not clear to me how.) Also, does wpp_parse() really >> need the input to be zero-terminated? > > wpp_parse() doesn't call wpp_close_mem() if the call to > pp_push_define_state() fails (can fail in out-of-memory conditions), > so the extra HeapFree was there for this case. Right, I only looked if wpp_callbacks->open()/wpp_callbacks->close() matched. If the alloc/free calls are on the same level it can't happen.