Dynamic memory management in CryptAcquireContext

Alexandre Julliard julliard at winehq.org
Mon Aug 2 12:34:41 CDT 2004

Michael Jung <mjung at iss.tu-darmstadt.de> writes:

> If the CSP's CPAcquireContext function fails, which is quite common (e.g. 
> because the user specified key container does not exist), the "temp" variable 
> is still free'd twice.

Yes, the free needs to be moved inside the if, sorry about that.

> I'm aware that my original patch was pretty ugly, due to a lot of redundancy, 
> but I think this is due to fact that the CryptAcquireContext function seems 
> not to be very well structured. I've submitted a patch two weeks ago, which 
> basically was a reimplementation of CryptAcquireContext, but which was not 
> committed (http://www.winehq.org/hypermail/wine-patches/2004/07/0213.html). 
> Rob Shearman commented on this patch and felt that it is overkill to add both 
> a helper function and a new struct type. Is this the reason the patch was not 
> applied?

It's overkill and it's ugly. If a function needs such elaborate
cleanup it's probably because it's trying to do too many things, and
that needs to be fixed; splitting the cleanup part into a separate
function only makes things even more confusing.

Alexandre Julliard
julliard at winehq.org

More information about the wine-devel mailing list