From 74476b700f1e499a731ba2ddbba87b12b9b5139b Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Thu, 31 Mar 2011 17:46:42 +0300 Subject: [PATCH] xfree86: loader: use one exit code only for readability No functional changes. Spaghetti code for the win! \o/ Signed-off-by: Tiago Vignatti Reviewed-by: Nicolas Peninguy --- hw/xfree86/loader/loadmod.c | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c index 46ce68b86..9f820993a 100644 --- a/hw/xfree86/loader/loadmod.c +++ b/hw/xfree86/loader/loadmod.c @@ -483,19 +483,15 @@ LoaderListDirs(const char **subdirlist, const char **patternlist) char *fp; char **listing = NULL; char **save; + char **ret = NULL; int n = 0; if (!(pathlist = InitPathList(NULL))) return NULL; - if (!(subdirs = InitSubdirs(subdirlist))) { - FreePathList(pathlist); - return NULL; - } - if (!(patterns = InitPatterns(patternlist))) { - FreePathList(pathlist); - FreeSubdirs(subdirs); - return NULL; - } + if (!(subdirs = InitSubdirs(subdirlist))) + goto bail; + if (!(patterns = InitPatterns(patternlist))) + goto bail; for (elem = pathlist; *elem; elem++) { for (s = subdirs; *s; s++) { @@ -529,20 +525,14 @@ LoaderListDirs(const char **subdirlist, const char **patternlist) save[n] = NULL; FreeStringList(save); } - FreePathList(pathlist); - FreeSubdirs(subdirs); - FreePatterns(patterns); closedir(d); - return NULL; + goto bail; } listing[n] = malloc(len + 1); if (!listing[n]) { FreeStringList(listing); - FreePathList(pathlist); - FreeSubdirs(subdirs); - FreePatterns(patterns); closedir(d); - return NULL; + goto bail; } strncpy(listing[n], dp->d_name + match[1].rm_so, len); @@ -558,11 +548,13 @@ LoaderListDirs(const char **subdirlist, const char **patternlist) } if (listing) listing[n] = NULL; + ret = listing; - FreePathList(pathlist); - FreeSubdirs(subdirs); +bail: FreePatterns(patterns); - return listing; + FreeSubdirs(subdirs); + FreePathList(pathlist); + return ret; } void