From d69585b82abfdaede9e8c358982a4953c432e8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Thu, 17 Sep 2020 22:27:33 +0200 Subject: Resolve DEBUG compilation issues Use NDEBUG conditional instead of DEBUG. Do not call static functions in extern inline ones. Vector.c:67:11: error: static function 'Vector_isConsistent' is used in an inline function with external linkage [-Werror,-Wstatic-in-inline] --- CRT.c | 4 ++-- Hashtable.c | 6 +++--- Hashtable.h | 4 ++-- Object.c | 4 ++-- Object.h | 4 ++-- Vector.c | 46 +++++++++++++++------------------------------- Vector.h | 23 +++++------------------ linux/LinuxProcessList.c | 2 +- 8 files changed, 32 insertions(+), 61 deletions(-) diff --git a/CRT.c b/CRT.c index 69372298..374e1721 100644 --- a/CRT.c +++ b/CRT.c @@ -631,13 +631,13 @@ void CRT_init(int delay, int colorScheme, bool allowUnicode) { define_key(sequence, KEY_ALT('A' + (c - 'a'))); } } -#ifndef DEBUG + struct sigaction act; sigemptyset (&act.sa_mask); act.sa_flags = (int)SA_RESETHAND; act.sa_handler = CRT_handleSIGSEGV; sigaction (SIGSEGV, &act, &old_sigsegv_handler); -#endif + signal(SIGTERM, CRT_handleSIGTERM); signal(SIGQUIT, CRT_handleSIGTERM); use_default_colors(); diff --git a/Hashtable.c b/Hashtable.c index bb9517ad..f8815f93 100644 --- a/Hashtable.c +++ b/Hashtable.c @@ -12,7 +12,7 @@ in the source distribution for its full text. #include -#ifdef DEBUG +#ifndef NDEBUG static bool Hashtable_isConsistent(Hashtable* this) { int items = 0; @@ -39,7 +39,7 @@ int Hashtable_count(Hashtable* this) { return items; } -#endif +#endif /* NDEBUG */ static HashtableItem* HashtableItem_new(unsigned int key, void* value) { HashtableItem* this; @@ -124,7 +124,7 @@ void* Hashtable_remove(Hashtable* this, unsigned int key) { return NULL; } -inline void* Hashtable_get(Hashtable* this, unsigned int key) { +void* Hashtable_get(Hashtable* this, unsigned int key) { unsigned int index = key % this->size; HashtableItem* bucketPtr = this->buckets[index]; while (true) { diff --git a/Hashtable.h b/Hashtable.h index 144f01cf..aacbb340 100644 --- a/Hashtable.h +++ b/Hashtable.h @@ -26,11 +26,11 @@ struct Hashtable_ { bool owner; }; -#ifdef DEBUG +#ifndef NDEBUG int Hashtable_count(Hashtable* this); -#endif +#endif /* NDEBUG */ Hashtable* Hashtable_new(int size, bool owner); diff --git a/Object.c b/Object.c index 4d8045dd..9ac2be67 100644 --- a/Object.c +++ b/Object.c @@ -12,7 +12,7 @@ ObjectClass Object_class = { .extends = NULL }; -#ifdef DEBUG +#ifndef NDEBUG bool Object_isA(Object* o, const ObjectClass* klass) { if (!o) @@ -26,4 +26,4 @@ bool Object_isA(Object* o, const ObjectClass* klass) { return false; } -#endif +#endif /* NDEBUG */ diff --git a/Object.h b/Object.h index 50a5f12d..462797c2 100644 --- a/Object.h +++ b/Object.h @@ -48,10 +48,10 @@ typedef union { extern ObjectClass Object_class; -#ifdef DEBUG +#ifndef NDEBUG bool Object_isA(Object* o, const ObjectClass* klass); -#endif +#endif /* NDEBUG */ #endif diff --git a/Vector.c b/Vector.c index 713d6831..ebddc0d6 100644 --- a/Vector.c +++ b/Vector.c @@ -38,9 +38,9 @@ void Vector_delete(Vector* this) { free(this); } -#ifdef DEBUG +#ifndef NDEBUG -static inline bool Vector_isConsistent(Vector* this) { +static bool Vector_isConsistent(Vector* this) { assert(this->items <= this->arraySize); if (this->owner) { for (int i = 0; i < this->items; i++) @@ -62,7 +62,18 @@ int Vector_count(Vector* this) { return items; } -#endif +Object* Vector_get(Vector* this, int idx) { + assert(idx < this->items); + assert(Vector_isConsistent(this)); + return this->array[idx]; +} + +int Vector_size(Vector* this) { + assert(Vector_isConsistent(this)); + return this->items; +} + +#endif /* NDEBUG */ void Vector_prune(Vector* this) { assert(Vector_isConsistent(this)); @@ -251,33 +262,6 @@ void Vector_set(Vector* this, int idx, void* data_) { assert(Vector_isConsistent(this)); } -#ifdef DEBUG - -inline Object* Vector_get(Vector* this, int idx) { - assert(idx < this->items); - assert(Vector_isConsistent(this)); - return this->array[idx]; -} - -#else - -// In this case, Vector_get is defined as a macro in vector.h - -#endif - -#ifdef DEBUG - -inline int Vector_size(Vector* this) { - assert(Vector_isConsistent(this)); - return this->items; -} - -#else - -// In this case, Vector_size is defined as a macro in vector.h - -#endif - /* static void Vector_merge(Vector* this, Vector* v2) { @@ -303,7 +287,7 @@ void Vector_add(Vector* this, void* data_) { assert(Vector_isConsistent(this)); } -inline int Vector_indexOf(Vector* this, void* search_, Object_Compare compare) { +int Vector_indexOf(Vector* this, void* search_, Object_Compare compare) { Object* search = search_; assert(Object_isA((Object*)search, this->type)); assert(compare); diff --git a/Vector.h b/Vector.h index 209e27cf..9bf73b52 100644 --- a/Vector.h +++ b/Vector.h @@ -28,12 +28,6 @@ Vector* Vector_new(ObjectClass* type, bool owner, int size); void Vector_delete(Vector* this); -#ifdef DEBUG - -int Vector_count(Vector* this); - -#endif - void Vector_prune(Vector* this); void Vector_quickSort(Vector* this); @@ -52,25 +46,18 @@ void Vector_moveDown(Vector* this, int idx); void Vector_set(Vector* this, int idx, void* data_); -#ifdef DEBUG +#ifndef NDEBUG Object* Vector_get(Vector* this, int idx); - -#else - -#define Vector_get(v_, idx_) ((v_)->array[idx_]) - -#endif - -#ifdef DEBUG - int Vector_size(Vector* this); +int Vector_count(Vector* this); -#else +#else /* NDEBUG */ +#define Vector_get(v_, idx_) ((v_)->array[idx_]) #define Vector_size(v_) ((v_)->items) -#endif +#endif /* NDEBUG */ void Vector_add(Vector* this, void* data_); diff --git a/linux/LinuxProcessList.c b/linux/LinuxProcessList.c index 1df7b32b..dcef14cf 100644 --- a/linux/LinuxProcessList.c +++ b/linux/LinuxProcessList.c @@ -670,7 +670,7 @@ static int handleNetlinkMsg(struct nl_msg *nlmsg, void *linuxProcess) { if ((nlattr = nlattrs[TASKSTATS_TYPE_AGGR_PID]) || (nlattr = nlattrs[TASKSTATS_TYPE_NULL])) { stats = nla_data(nla_next(nla_data(nlattr), &rem)); - assert(lp->super.pid == stats->ac_pid); + assert(lp->super.pid == (pid_t)stats->ac_pid); timeDelta = (stats->ac_etime*1000 - lp->delay_read_time); #define BOUNDS(x) isnan(x) ? 0.0 : (x > 100) ? 100.0 : x; #define DELTAPERC(x,y) BOUNDS((float) (x - y) / timeDelta * 100); -- cgit v1.2.3