No functional changes. Spaghetti code for win! \o/

Signed-off-by: Tiago Vignatti <[email protected]>
---
 hw/xfree86/loader/loadmod.c |   34 ++++++++++++++--------------------
 1 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index 46ce68b..db8037c 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 InitSubdirs_fail;
+    if (!(patterns = InitPatterns(patternlist)))
+       goto InitPatterns_fail;
 
     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,15 @@ LoaderListDirs(const char **subdirlist, const char 
**patternlist)
     }
     if (listing)
        listing[n] = NULL;
+    ret = listing;
 
-    FreePathList(pathlist);
-    FreeSubdirs(subdirs);
+bail:
     FreePatterns(patterns);
-    return listing;
+InitPatterns_fail:
+    FreeSubdirs(subdirs);
+InitSubdirs_fail:
+    FreePathList(pathlist);
+    return ret;
 }
 
 void
-- 
1.7.0.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to