From 5cf068c08da44590fb42f5c42507ce5be8a02c45 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 27 Jan 2010 00:07:50 +0100 Subject: [PATCH] contextswitch plugin: Handle large counter/derive values correctly. Using "strtoul" for derive_t values fails for large counter values. Thanks to Martin Merkel for reporting this :) --- src/contextswitch.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/contextswitch.c b/src/contextswitch.c index 7787203d..06055ca5 100644 --- a/src/contextswitch.c +++ b/src/contextswitch.c @@ -27,7 +27,7 @@ # error "No applicable input method." #endif -static void cs_submit (unsigned long context_switches) +static void cs_submit (derive_t context_switches) { value_t values[1]; value_list_t vl = VALUE_LIST_INIT; @@ -49,7 +49,7 @@ static int cs_read (void) char buffer[64]; int numfields; char *fields[3]; - unsigned long result = 0; + derive_t result = 0; int status = -2; fh = fopen ("/proc/stat", "r"); @@ -72,7 +72,7 @@ static int cs_read (void) errno = 0; endptr = NULL; - result = strtoul(fields[1], &endptr, 10); + result = (derive_t) strtoll (fields[1], &endptr, /* base = */ 10); if ((endptr == fields[1]) || (errno != 0)) { ERROR ("contextswitch plugin: Cannot parse ctxt value: %s", fields[1]); -- 2.30.2