diff options
| -rw-r--r-- | lib/libalpm/package.c | 23 | 
1 files changed, 8 insertions, 15 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index d741562d..1f572594 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -271,27 +271,15 @@ pmpkg_t *_alpm_pkg_load(char *pkgfile)  			/* parse the info file */  			if(parse_descfile(descfile, info, 0) == -1) {  				_alpm_log(PM_LOG_ERROR, _("could not parse the package description file")); -				pm_errno = PM_ERR_PKG_INVALID; -				unlink(descfile); -				FREE(descfile); -				close(fd); -				goto error; +				goto pkg_invalid;  			}  			if(!strlen(info->name)) {  				_alpm_log(PM_LOG_ERROR, _("missing package name in %s"), pkgfile); -				pm_errno = PM_ERR_PKG_INVALID; -				unlink(descfile); -				FREE(descfile); -				close(fd); -				goto error; +				goto pkg_invalid;  			}  			if(!strlen(info->version)) {  				_alpm_log(PM_LOG_ERROR, _("missing package version in %s"), pkgfile); -				pm_errno = PM_ERR_PKG_INVALID; -				unlink(descfile); -				FREE(descfile); -				close(fd); -				goto error; +				goto pkg_invalid;  			}  			config = 1;  			unlink(descfile); @@ -361,6 +349,11 @@ pmpkg_t *_alpm_pkg_load(char *pkgfile)  	return(info); +pkg_invalid: +	pm_errno = PM_ERR_PKG_INVALID; +	unlink(descfile); +	FREE(descfile); +	close(fd);  error:  	FREEPKG(info);  	archive_read_finish (archive);  | 
