On 5 February 2010 18:19, Matteo Bruni <matteo.mystral at 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.