On 03/19/2012 03:49 PM, Eric Blake wrote:
On 03/19/2012 12:46 PM, Laine Stump wrote:
> If an error was encountered parsing a dhcp host entry mac address or
> name, parsing would continue and log a less descriptive error that
> might make it more difficult to notice the true nature of the problem.
>
> This patch returns immediately on logging the first error.
> ---
> src/conf/network_conf.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index 0333141..4341f11 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -430,13 +430,16 @@ virNetworkDHCPRangeDefParseXML(const char *networkName,
> _("Cannot parse MAC address '%s'
in network '%s'"),
> mac, networkName);
> VIR_FREE(mac);
> + return -1;
> }
> name = virXMLPropString(cur, "name");
> if ((name != NULL) && (!c_isalpha(name[0]))) {
> virNetworkReportError(VIR_ERR_INTERNAL_ERROR,
> _("Cannot use name address '%s'
in network '%s'"),
> name, networkName);
> + VIR_FREE(mac);
> VIR_FREE(name);
> + return -1;
ACK. I was debating if it would have been any cleaner to have a
cleanup: label, but then you start having to do major refactoring to
take advantage of it, at which point this patch would no longer be quite
so small.
Yeah, I go through the same thought process every time I see cleanup
code like this. It's so much more difficult to introduce leaks when
there is a single exit from the function and everything is always
cleaned up.
Pushed. Thanks!