- always clear locally defined macros when they go out of scope

This commit is contained in:
Panu Matilainen 2010-01-04 11:04:44 +00:00
parent 6dc5ba3bbe
commit 80483430ad
2 changed files with 32 additions and 1 deletions

View File

@ -0,0 +1,26 @@
commit f895acd285366cf58cc3c97b5f188fecbfd782a8
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Mon Jan 4 12:20:09 2010 +0200
Always free locally defined macros when they go out of scope
- Prior to this, local defines in constructs like %{!?foo: %define foo bar}
would remain defined until a parametrized macro gets called, causing
obscure and confusing errors in specs such as RhBug:551971 and countless
others. Use of %global is now always required for such constructs.
diff --git a/rpmio/macro.c b/rpmio/macro.c
index 88fb583..11db47d 100644
--- a/rpmio/macro.c
+++ b/rpmio/macro.c
@@ -1344,9 +1344,8 @@ expandMacro(MacroBuf mb)
me->used++; /* Mark macro as used */
}
- /* Free args for "%name " macros with opts */
- if (me->opts != NULL)
- freeArgs(mb);
+ /* Free locally defined macros, such as macro options */
+ freeArgs(mb);
s = se;
}

View File

@ -21,7 +21,7 @@
Summary: The RPM package management system
Name: rpm
Version: %{rpmver}
Release: 0.%{snapver}.4
Release: 0.%{snapver}.5
Group: System Environment/Base
Url: http://www.rpm.org/
Source0: http://rpm.org/releases/testing/%{name}-%{srcver}.tar.bz2
@ -40,6 +40,7 @@ Patch3: rpm-4.7.90-fedora-specspo.patch
Patch200: rpm-4.7.90-python-bytecompile.patch
Patch201: rpm-4.7.90-python-refcounts.patch
Patch202: rpm-4.7.90-spec-allow-unexpanded-macros.patch
Patch203: rpm-4.7.90-macro-scope.patch
# These are not yet upstream
Patch301: rpm-4.6.0-niagara.patch
@ -187,6 +188,7 @@ packages on a system.
%patch200 -p1 -b .python-bytecompile
%patch201 -p1 -b .python-refcounts
%patch202 -p1 -b .spec-unexpanded-macros
%patch203 -p1 -b .macro-scope
%patch301 -p1 -b .niagara
%patch302 -p1 -b .geode
@ -401,6 +403,9 @@ exit 0
%doc doc/librpm/html/*
%changelog
* Mon Jan 04 2010 Panu Matilainen <pmatilai@redhat.com> - 4.8.0-0.beta1.5
- always clear locally defined macros when they go out of scope
* Thu Dec 17 2009 Panu Matilainen <pmatilai@redhat.com> - 4.8.0-0.beta1.4
- permit unexpanded macros when parsing spec (#547997)