-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 2015-03-04 um 04:15 schrieb Alistair Leslie-Hughes:
+ if(entry->type == DPNA_DATATYPE_STRING_ANSI) + heap_free(entry->data.ansi); + else if(entry->type == DPNA_DATATYPE_STRING) + heap_free(entry->data.string); + else if(entry->type == DPNA_DATATYPE_BINARY) + heap_free(entry->data.binary); This code is OK with me.
What I think Nikolai meant was that you don't need the if / else if / else if checks and can just call heap_free(entry->data.binary) (or heap_free(entry->data.ansi) or heap_free(entry->data.string)) regardless of the type because it's just a union. However, there's a caveat, and this is why I think the code you have is reasonable: You don't want to free a non-pointer type (DPNA_DATATYPE_DWORD, DPNA_DATATYPE_GUID), so you need to check the type anyway. And if you have the code above or if (type == STRING || type == BINARY || type == ANSI) free(data.binary) doesn't really make a difference IMHO. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBAgAGBQJU9um8AAoJEN0/YqbEcdMwh1wP/iQp3BbqRYT/5UqR+SJodAA+ 4MlKAmhdZ395k4G5AFAw6uZ1RnOxVjq0BH20jQbVo+l2bNiHPEsSQ0Ua9tcdQjR3 wA70dQpIQgL9/XCHxQZKfZN1ujEcAR0IsgOxqEW7mPQNwe/hRYPSLysubUJaYGeR cExeKFdabEM5pEIu+OwPxdvevRSVMA2Je38dlggMnIkq4ajJIM7I+x87GEJAxzaJ U3RsqqgTI2jvFspG5F12/O3hpynoAPUiHgsoQgzolMIcJLwqMaCFuM+Ify4kZotq h/Hdk8hR5BjBwAOJZZwJqyCYaulSVftRYH1k33N75o7LHOgwWDps/C7jzg7sgyLE F+187z1RBfWtvUmeJORRlezo1v9rceIqRX8H7rfKfsec500gF0KtVWcQxhENxfp/ +j5vgms5gSAtzvgig50Oq35GCULWspjzz4AnxzEB8BH/Z6ugE4zakejlAjUVMUVR T0iTKkhp25U7L4jl8TqKSJ82TZMh2Yc8ydrieO/XVNtMH5yjIw/A0Ecb+laKlwMy OfI9rQOUPyFhxu2dtxEn4MCgCussBF+Py9gL3mZ2ausfIttw8hH2nigb0sMud0YC oDPyTmVDK5ALvducoHi/QQhBoCh1duYkiscAj1n3IfYBNc/d89vKxmtEDr9O/jk1 QNm18QYpQzTXoprDPmQM =TILa -----END PGP SIGNATURE-----