Backport of 265a7b8a501174e2f5c8268a76b5e88d6688ad70 --- --- a/linux/LinuxProcessList.c +++ b/linux/LinuxProcessList.c @@ -398,6 +398,7 @@ unsigned long long last_read = process->io_read_bytes; unsigned long long last_write = process->io_write_bytes; + char* buf = buffer; char* line = NULL; while ((line = strsep(&buf, "\n")) != NULL) { @@ -408,7 +409,7 @@ } else if (String_startsWith(line + 1, "ead_bytes: ")) { process->io_read_bytes = strtoull(line + 12, NULL, 10); process->io_rate_read_bps = - ((double)(process->io_read_bytes - last_read)) / (((double)(now - process->io_rate_read_time)) / 1000); + now > process->io_rate_read_time ? ((double)(process->io_read_bytes - last_read)) / (((double)(now - process->io_rate_read_time)) / 1000) : NAN; process->io_rate_read_time = now; } break; @@ -418,7 +419,7 @@ } else if (String_startsWith(line + 1, "rite_bytes: ")) { process->io_write_bytes = strtoull(line + 13, NULL, 10); process->io_rate_write_bps = - ((double)(process->io_write_bytes - last_write)) / (((double)(now - process->io_rate_write_time)) / 1000); + now > process->io_rate_write_time ? ((double)(process->io_write_bytes - last_write)) / (((double)(now - process->io_rate_write_time)) / 1000) : NAN; process->io_rate_write_time = now; } break;