diff options
author | Benny Baumann <BenBE@geshi.org> | 2022-04-03 12:57:23 +0200 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2022-04-21 08:56:56 +0200 |
commit | b83ce85d89c6d368ffb8146043b878a441226ada (patch) | |
tree | 923031ec72ab0c41947c615440202290f8b4d4a8 | |
parent | ee1bf2f9172ab11f867a87d7031408f9df1d8889 (diff) |
Force elapsed time display to zero if process seems started in the future
-rw-r--r-- | Process.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -871,7 +871,15 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field Process_printLeftAlignedField(str, attr, cwd, 25); return; } - case ELAPSED: Process_printTime(str, /* convert to hundreds of a second */ this->processList->realtimeMs / 10 - 100 * this->starttime_ctime, coloring); return; + case ELAPSED: { + const uint64_t rt = this->processList->realtimeMs; + const uint64_t st = this->starttime_ctime * 1000; + const uint64_t dt = + rt < st ? 0 : + rt - st; + Process_printTime(str, /* convert to hundreds of a second */ dt / 10, coloring); + return; + } case MAJFLT: Process_printCount(str, this->majflt, coloring); return; case MINFLT: Process_printCount(str, this->minflt, coloring); return; case M_RESIDENT: Process_printKBytes(str, this->m_resident, coloring); return; |