diff --git a/Object.c b/Object.c index 120d28c141b255292741c1c90a1c1bd8fc5d3950..e9b67fe9ca7246da55d70bfb4c46df357b7f86e0 100644 --- a/Object.c +++ b/Object.c @@ -27,7 +27,7 @@ typedef void(*Object_Delete)(Object*); #define Class(class_) ((ObjectClass*)(&(class_ ## _class))) -#define AllocThis(class_) (class_*) xMalloc(sizeof(class_)); Object_setClass(this, Class(class_)); +#define AllocThis(class_) (class_*) xCalloc(sizeof(class_), 1); Object_setClass(this, Class(class_)); typedef struct ObjectClass_ { const void* extends; diff --git a/Object.h b/Object.h index 19a667c8a6d00322dda59c4a169947c1dc8bb133..c8945e69bc93cfa64d270e0914e648f4aca1f117 100644 --- a/Object.h +++ b/Object.h @@ -28,7 +28,7 @@ typedef void(*Object_Delete)(Object*); #define Class(class_) ((ObjectClass*)(&(class_ ## _class))) -#define AllocThis(class_) (class_*) xMalloc(sizeof(class_)); Object_setClass(this, Class(class_)); +#define AllocThis(class_) (class_*) xCalloc(sizeof(class_), 1); Object_setClass(this, Class(class_)); typedef struct ObjectClass_ { const void* extends; diff --git a/darwin/DarwinProcessList.c b/darwin/DarwinProcessList.c index 5106158317ad751a149c0c360c9c4c4118e3f1c9..fd5f9aef04a059914acedb15c435129c4314770f 100644 --- a/darwin/DarwinProcessList.c +++ b/darwin/DarwinProcessList.c @@ -108,7 +108,7 @@ struct kinfo_proc *ProcessList_getKInfoProcs(size_t *count) { ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, uid_t userId) { DarwinProcessList* this = xCalloc(1, sizeof(DarwinProcessList)); - ProcessList_init(&this->super, Class(Process), usersTable, pidWhiteList, userId); + ProcessList_init(&this->super, Class(DarwinProcess), usersTable, pidWhiteList, userId); /* Initialize the CPU information */ this->super.cpuCount = ProcessList_allocateCPULoadInfo(&this->prev_load); diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c index acb30fbc2aa26477d18ce568cf9ed3ddfb8aa4d3..4d941d702e96aa5a11c22bcd867aae04f7e1f388 100644 --- a/linux/LinuxProcess.c +++ b/linux/LinuxProcess.c @@ -268,8 +268,7 @@ ObjectClass LinuxProcess_class = { }; Process* Process_new(Settings* settings) { - LinuxProcess* this = xCalloc(1, sizeof(LinuxProcess)); - Object_setClass(this, Class(LinuxProcess)); + LinuxProcess* this = AllocThis(LinuxProcess); Process_init(&this->super, settings); return (Process*) this; } @@ -441,9 +440,9 @@ long LinuxProcess_compare(const void* v1, const void* v2) { case RBYTES: diff = p2->io_read_bytes - p1->io_read_bytes; goto test_diff; case WBYTES: diff = p2->io_write_bytes - p1->io_write_bytes; goto test_diff; case CNCLWB: diff = p2->io_cancelled_write_bytes - p1->io_cancelled_write_bytes; goto test_diff; - case IO_READ_RATE: diff = p2->io_rate_read_bps - p1->io_rate_read_bps; goto test_diff; - case IO_WRITE_RATE: diff = p2->io_rate_write_bps - p1->io_rate_write_bps; goto test_diff; - case IO_RATE: diff = (p2->io_rate_read_bps + p2->io_rate_write_bps) - (p1->io_rate_read_bps + p1->io_rate_write_bps); goto test_diff; + case IO_READ_RATE: return p2->io_rate_read_bps > p1->io_rate_read_bps ? 1 : -1; + case IO_WRITE_RATE: return p2->io_rate_write_bps > p1->io_rate_write_bps ? 1 : -1; + case IO_RATE: return (p2->io_rate_read_bps + p2->io_rate_write_bps) > (p1->io_rate_read_bps + p1->io_rate_write_bps) ? 1 : -1; #endif #ifdef HAVE_OPENVZ case CTID: diff --git a/linux/LinuxProcessList.c b/linux/LinuxProcessList.c index 76e56ab44753c2e9ee3b63a46e325d3a7dd2e9e4..2990908bb0badaf660e4f0a5e136f86deb3f49f1 100644 --- a/linux/LinuxProcessList.c +++ b/linux/LinuxProcessList.c @@ -6,6 +6,7 @@ in the source distribution for its full text. */ #include "LinuxProcessList.h" +#include "LinuxProcess.h" #include "CRT.h" #include "StringUtils.h" #include @@ -217,7 +218,7 @@ static void LinuxProcessList_initNetlinkSocket(LinuxProcessList* this) { ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList, uid_t userId) { LinuxProcessList* this = xCalloc(1, sizeof(LinuxProcessList)); ProcessList* pl = &(this->super); - ProcessList_init(pl, Class(Process), usersTable, pidWhiteList, userId); + ProcessList_init(pl, Class(LinuxProcess), usersTable, pidWhiteList, userId); LinuxProcessList_initTtyDrivers(this);