From d9cc831fdde9a61386d1099fd7c9234258f7d492 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Wed, 15 Nov 2006 03:28:37 +0000 Subject: [PATCH] fix reported memory var overflow by using unsigned long long git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@775 7f574dfc-610e-0410-a909-a81674777703 --- ChangeLog | 2 ++ src/conky.c | 8 ++++---- src/conky.h | 4 ++-- src/linux.c | 12 ++++++------ 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index b05c9ac3..367b87aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ * Add new timed thread abstraction file. * Convert thread activity to timed threads, including texeci, imap, pop3, audacious. + * Change memory vars from unsigned long to unsigned long long + to fix reported overflow, e.g. swapmax >= 4Gb. 2006-11-13 * Use pthread_cond_timedwait() instead of sleep() in audacious diff --git a/src/conky.c b/src/conky.c index dbae0578..9cde1d9c 100644 --- a/src/conky.c +++ b/src/conky.c @@ -3991,12 +3991,12 @@ static void generate_text_internal(char *p, int p_max_size, struct text_object * OBJ(memperc) { if (cur->memmax) { if (!use_spacer) - snprintf(p, p_max_size, "%*lu", + snprintf(p, p_max_size, "%*Lu", pad_percents, (cur->mem * 100) / (cur->memmax)); else - snprintf(p, 4, "%*lu ", + snprintf(p, 4, "%*Lu ", pad_percents, (cur->mem * 100) / (cur->memmax)); @@ -4099,13 +4099,13 @@ static void generate_text_internal(char *p, int p_max_size, struct text_object * strncpy(p, "No swap", 255); } else { if (!use_spacer) - snprintf(p, 255, "%*lu", + snprintf(p, 255, "%*Lu", pad_percents, (cur->swap * 100) / cur->swapmax); else - snprintf(p, 4, "%*lu ", + snprintf(p, 4, "%*Lu ", pad_percents, (cur->swap * 100) / diff --git a/src/conky.h b/src/conky.h index 63136a42..228af4cb 100644 --- a/src/conky.h +++ b/src/conky.h @@ -242,8 +242,8 @@ struct information { double uptime; /* memory information in kilobytes */ - unsigned long mem, memmax, swap, swapmax; - unsigned long bufmem, buffers, cached; + unsigned long long mem, memmax, swap, swapmax; + unsigned long long bufmem, buffers, cached; unsigned short procs; unsigned short run_procs; diff --git a/src/linux.c b/src/linux.c index 41bf98af..832b5d2e 100644 --- a/src/linux.c +++ b/src/linux.c @@ -113,17 +113,17 @@ void update_meminfo() break; if (strncmp(buf, "MemTotal:", 9) == 0) { - sscanf(buf, "%*s %lu", &info.memmax); + sscanf(buf, "%*s %Lu", &info.memmax); } else if (strncmp(buf, "MemFree:", 8) == 0) { - sscanf(buf, "%*s %lu", &info.mem); + sscanf(buf, "%*s %Lu", &info.mem); } else if (strncmp(buf, "SwapTotal:", 10) == 0) { - sscanf(buf, "%*s %lu", &info.swapmax); + sscanf(buf, "%*s %Lu", &info.swapmax); } else if (strncmp(buf, "SwapFree:", 9) == 0) { - sscanf(buf, "%*s %lu", &info.swap); + sscanf(buf, "%*s %Lu", &info.swap); } else if (strncmp(buf, "Buffers:", 8) == 0) { - sscanf(buf, "%*s %lu", &info.buffers); + sscanf(buf, "%*s %Lu", &info.buffers); } else if (strncmp(buf, "Cached:", 7) == 0) { - sscanf(buf, "%*s %lu", &info.cached); + sscanf(buf, "%*s %Lu", &info.cached); } }