fix reported memory var overflow by using unsigned long long
authorPhilip Kovacs <pkovacs@users.sourceforge.net>
Wed, 15 Nov 2006 03:28:37 +0000 (03:28 +0000)
committerPhilip Kovacs <pkovacs@users.sourceforge.net>
Wed, 15 Nov 2006 03:28:37 +0000 (03:28 +0000)
git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@775 7f574dfc-610e-0410-a909-a81674777703

ChangeLog
src/conky.c
src/conky.h
src/linux.c

index b05c9ac..367b87a 100644 (file)
--- 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
index dbae057..9cde1d9 100644 (file)
@@ -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) /
index 63136a4..228af4c 100644 (file)
@@ -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;
index 41bf98a..832b5d2 100644 (file)
@@ -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);
                }
        }