diff --git a/src/module.c b/src/module.c index 68420a338eb556fd865ab9dae577a2848eeae5d7..fc93a3bec2d7bbf4967003b0ce2f3722d3ab1657 100644 --- a/src/module.c +++ b/src/module.c @@ -2,7 +2,7 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: module.c,v 1.39 2006/02/27 12:33:55 mast Exp $ +|| $Id: module.c,v 1.40 2006/07/04 21:31:30 mast Exp $ */ #include "global.h" @@ -143,7 +143,7 @@ static void exit_builtin_modules(void) gc_keep_markers = 1; do_gc (NULL, 1); -#define STATIC_ARRAYS {&empty_array, &weak_empty_array} +#define STATIC_ARRAYS &empty_array, &weak_empty_array, #define REPORT_LINKED_LIST_LEAKS(TYPE, START, STATICS, T_TYPE, NAME) do { \ struct TYPE *x; \ @@ -157,9 +157,9 @@ static void exit_builtin_modules(void) } \ else { \ int is_static = 0; \ - static const struct TYPE *statics[] = STATICS; \ + static const struct TYPE *statics[] = {STATICS NULL}; \ ptrdiff_t i; /* Use signed type to avoid warnings from gcc. */ \ - for (i = 0; i < (ptrdiff_t) NELEM (statics); i++) \ + for (i = 0; i < (ptrdiff_t) (NELEM (statics) - 1); i++) \ if (x == statics[i]) \ is_static = 1; \ if (x->refs != m->refs + is_static) { \ @@ -178,10 +178,10 @@ static void exit_builtin_modules(void) } while (0) REPORT_LINKED_LIST_LEAKS (array, first_array, STATIC_ARRAYS, T_ARRAY, "Array"); - REPORT_LINKED_LIST_LEAKS (multiset, first_multiset, {}, T_MULTISET, "Multiset"); - REPORT_LINKED_LIST_LEAKS (mapping, first_mapping, {}, T_MAPPING, "Mapping"); - REPORT_LINKED_LIST_LEAKS (program, first_program, {}, T_PROGRAM, "Program"); - REPORT_LINKED_LIST_LEAKS (object, first_object, {}, T_OBJECT, "Object"); + REPORT_LINKED_LIST_LEAKS (multiset, first_multiset, NOTHING, T_MULTISET, "Multiset"); + REPORT_LINKED_LIST_LEAKS (mapping, first_mapping, NOTHING, T_MAPPING, "Mapping"); + REPORT_LINKED_LIST_LEAKS (program, first_program, NOTHING, T_PROGRAM, "Program"); + REPORT_LINKED_LIST_LEAKS (object, first_object, NOTHING, T_OBJECT, "Object"); #undef REPORT_LINKED_LIST_LEAKS @@ -202,10 +202,10 @@ static void exit_builtin_modules(void) next = x->next; \ if (m) { \ int is_static = 0; \ - static const struct TYPE *statics[] = STATICS; \ + static const struct TYPE *statics[] = {STATICS NULL}; \ ptrdiff_t i; /* Use signed type to avoid warnings from gcc. */ \ INT32 refs; \ - for (i = 0; i < (ptrdiff_t) NELEM (statics); i++) \ + for (i = 0; i < (ptrdiff_t) (NELEM (statics) - 1); i++) \ if (x == statics[i]) \ is_static = 1; \ refs = x->refs; \ @@ -219,10 +219,10 @@ static void exit_builtin_modules(void) } while (0) ZAP_LINKED_LIST_LEAKS (array, first_array, STATIC_ARRAYS); - ZAP_LINKED_LIST_LEAKS (multiset, first_multiset, {}); - ZAP_LINKED_LIST_LEAKS (mapping, first_mapping, {}); - ZAP_LINKED_LIST_LEAKS (program, first_program, {}); - ZAP_LINKED_LIST_LEAKS (object, first_object, {}); + ZAP_LINKED_LIST_LEAKS (multiset, first_multiset, NOTHING); + ZAP_LINKED_LIST_LEAKS (mapping, first_mapping, NOTHING); + ZAP_LINKED_LIST_LEAKS (program, first_program, NOTHING); + ZAP_LINKED_LIST_LEAKS (object, first_object, NOTHING); #undef ZAP_LINKED_LIST_LEAKS diff --git a/src/pike_macros.h b/src/pike_macros.h index 67126e5e4dc1ac17606c43faa737e05bde1f66b4..8f080477079e4b8a8ed603ce01c5bc01bebbf052 100644 --- a/src/pike_macros.h +++ b/src/pike_macros.h @@ -2,7 +2,7 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: pike_macros.h,v 1.39 2005/03/15 09:58:35 grubba Exp $ +|| $Id: pike_macros.h,v 1.40 2006/07/04 21:31:30 mast Exp $ */ #ifndef MACROS_H @@ -128,6 +128,9 @@ PMOD_EXPORT extern const char Pike_is8bitalnum_vector[]; /* Useful to get a literal comma in an argument to a macro. */ #define COMMA , +/* Necessary to pass an empty argument to a macro for some preprocessors. */ +#define NOTHING + /* Needed for fsort_template.h */ PMOD_EXPORT int my_log2(size_t x);