From d8cde273e5523364df4f4f9ae7ad3374cf02e549 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 17 Aug 2009 12:07:48 +0300 Subject: Avoid adding Lua sources and patches twice when recursing (ticket #82) - parseSpec() operates on newly created empty spec structures even when "recursing" but the lua variables are global and need recursion protection to avoid adding multiple times --- build/spec.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'build') diff --git a/build/spec.c b/build/spec.c index ca9710761..19974ef55 100644 --- a/build/spec.c +++ b/build/spec.c @@ -346,16 +346,16 @@ int addSource(rpmSpec spec, Package pkg, const char *field, rpmTag tag) addMacro(spec->macros, buf, NULL, p->fullSource, RMIL_SPEC); free(buf); #ifdef WITH_LUA - { - rpmlua lua = NULL; /* global state */ - const char * what = (flag & RPMBUILD_ISPATCH) ? "patches" : "sources"; - rpmluaPushTable(lua, what); - rpmluav var = rpmluavNew(); - rpmluavSetListMode(var, 1); - rpmluavSetValue(var, RPMLUAV_STRING, body); - rpmluaSetVar(lua, var); - var = rpmluavFree(var); - rpmluaPop(lua); + if (!spec->recursing) { + rpmlua lua = NULL; /* global state */ + const char * what = (flag & RPMBUILD_ISPATCH) ? "patches" : "sources"; + rpmluaPushTable(lua, what); + rpmluav var = rpmluavNew(); + rpmluavSetListMode(var, 1); + rpmluavSetValue(var, RPMLUAV_STRING, body); + rpmluaSetVar(lua, var); + var = rpmluavFree(var); + rpmluaPop(lua); } #endif body = _free(body); -- cgit v1.2.3