
On 27.08.2013 14:07, Eric Blake wrote:
On 08/27/2013 06:03 AM, Laine Stump wrote:
On 08/26/2013 09:39 AM, Ján Tomko wrote:
If the network has not been found, virNetworkFree(NULL) was called, resulting in an extra error: error: invalid network pointer in virNetworkFree
The patch is okay, but all vir*Free() functions should be NOPs when the argument is NULL.
All _internal_ vir*Free functions should be NOPs. All public vir*Free APIs (including virNetworkFree) are documented to explicitly fail on NULL arguments (more precisely, on any argument not created by an earlier API call), and we cannot change that behavior as it would be an API change that violates back-compat.
Why it would break backward compatibility? I think it will break forward compatibility instead (which we don't care about). That is, currently apps have to use: virXPtr obj = NULL; obj = virLookupBy..(); ... do something with obj; ret = 0; cleanup: if (obj) virXFree(obj); However, if virXFree would accept NULL, it won't affect older applications, while new can just: cleanup: virXFree(obj); But then again, this is forward compatibility (the code won't work with downgraded libvirtd) - but who cares? Michal