diff options
author | marha <marha@users.sourceforge.net> | 2011-04-14 06:41:54 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-04-14 06:41:54 +0000 |
commit | 019fc27ce6dc2a1809107be10d4deb80e0fa436b (patch) | |
tree | 57bc2571720a5d6e518ef15879d56ea066df494c /xorg-server/hw/xfree86/loader | |
parent | 7bcdd32ccff794b9a83a88ff9bc2d0b7b088bd06 (diff) | |
download | vcxsrv-019fc27ce6dc2a1809107be10d4deb80e0fa436b.tar.gz vcxsrv-019fc27ce6dc2a1809107be10d4deb80e0fa436b.tar.bz2 vcxsrv-019fc27ce6dc2a1809107be10d4deb80e0fa436b.zip |
server xkeyboard-config mesa git update 14 Apr 2011
Diffstat (limited to 'xorg-server/hw/xfree86/loader')
-rw-r--r-- | xorg-server/hw/xfree86/loader/loadmod.c | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/xorg-server/hw/xfree86/loader/loadmod.c b/xorg-server/hw/xfree86/loader/loadmod.c index 46ce68b86..9f820993a 100644 --- a/xorg-server/hw/xfree86/loader/loadmod.c +++ b/xorg-server/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 |