From 4847a1161c712e6e56287b367296cc837bcd6b0a Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Mon, 30 Sep 2013 15:25:17 +0200 Subject: utils: make FOREACH macro _iter variable unique --- src/utils.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/utils.h b/src/utils.h index 5aa2915..69a4259 100644 --- a/src/utils.h +++ b/src/utils.h @@ -54,12 +54,16 @@ void collection_remove(struct collection *col, void *element); int collection_count(struct collection *col); void collection_free(struct collection *col); +#define MERGE_(a,b) a ## _ ## b +#define LABEL_(a,b) MERGE_(a, b) +#define UNIQUE_VAR(a) LABEL_(a, __LINE__) + #define FOREACH(var, col) \ do { \ - int _iter; \ - for(_iter=0; _iter<(col)->capacity; _iter++) { \ - if(!(col)->list[_iter]) continue; \ - var = (col)->list[_iter]; + int UNIQUE_VAR(_iter); \ + for(UNIQUE_VAR(_iter)=0; UNIQUE_VAR(_iter)<(col)->capacity; UNIQUE_VAR(_iter)++) { \ + if(!(col)->list[UNIQUE_VAR(_iter)]) continue; \ + var = (col)->list[UNIQUE_VAR(_iter)]; #define ENDFOREACH \ } \ -- cgit v1.1-32-gdbae