From: Panu Matilainen Date: Tue, 31 May 2011 08:38:38 +0000 (+0300) Subject: Clean up + clarify popMacro() a bit X-Git-Tag: rpm-4.10.0-beta1~471 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bd4fc3088451b9aec63bfd75478ceb43ae80de59;p=platform%2Fupstream%2Frpm.git Clean up + clarify popMacro() a bit - Actually protect against NULL mep (shouldn't happen but...) - Remove bogus comment + add actually relevant comments - Make the *mep reassignment more obvious by taking it out of the if where its easily missed - Replace dead NULL-assignments with a trash-n-burn memset() - Fixup indentation to match general rpm style --- diff --git a/rpmio/macro.c b/rpmio/macro.c index f5488a6..9667d71 100644 --- a/rpmio/macro.c +++ b/rpmio/macro.c @@ -691,16 +691,21 @@ pushMacro(rpmMacroEntry * mep, static void popMacro(rpmMacroEntry * mep) { - rpmMacroEntry me = (*mep ? *mep : NULL); - - if (me) { - /* XXX cast to workaround const */ - if ((*mep = me->prev) == NULL) - me->name = _free(me->name); - me->opts = _free(me->opts); - me->body = _free(me->body); - me = _free(me); - } + if (mep && *mep) { + rpmMacroEntry me = *mep; + + /* restore previous definition of the macro */ + *mep = me->prev; + + /* name is shared between entries, only free if last of its kind */ + if (me->prev == NULL) + free(me->name); + free(me->opts); + free(me->body); + + memset(me, 0, sizeof(*me)); /* trash and burn */ + free(me); + } } /**