From f8d3fffe7dca90746e5a9c612179c6cac0f4869b Mon Sep 17 00:00:00 2001 From: michaelh Date: Sat, 5 May 2001 21:46:11 +0000 Subject: [PATCH] Fixed up va_args for ppc git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@780 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- src/SDCCset.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/SDCCset.c b/src/SDCCset.c index 007699ed..07ab964a 100644 --- a/src/SDCCset.c +++ b/src/SDCCset.c @@ -172,10 +172,13 @@ deleteItemIf (set ** sset, int (*cond) (void *, va_list),...) set *sp = *sset; va_list ap; - va_start (ap, cond); - while (sp) { + // On the x86 va_list is just a pointer, so due to pass by value + // ap is not mofified by the called function. On the PPC va_list + // is a pointer to a structure, so ap is modified. Re-init each time. + va_start (ap, cond); + if ((*cond) (sp->item, ap)) { deleteSetItem (sset, sp->item); @@ -183,6 +186,7 @@ deleteItemIf (set ** sset, int (*cond) (void *, va_list),...) continue; } + va_end(ap); sp = sp->next; } } -- 2.30.2