diff --git a/src/system/kernel/scheduler/scheduler_profiler.cpp b/src/system/kernel/scheduler/scheduler_profiler.cpp index 12a2042b24..d3399de78b 100644 --- a/src/system/kernel/scheduler/scheduler_profiler.cpp +++ b/src/system/kernel/scheduler/scheduler_profiler.cpp @@ -263,7 +263,11 @@ Profiler::_CompareFunctions(const void* _a, const void* _b) const FunctionData* a = static_cast(_a); const FunctionData* b = static_cast(_b); - return b->*Member - a->*Member; + if (b->*Member > a->*Member) + return 1; + if (b->*Member < a->*Member) + return -1; + return 0; } @@ -274,7 +278,14 @@ Profiler::_CompareFunctionsPerCall(const void* _a, const void* _b) const FunctionData* a = static_cast(_a); const FunctionData* b = static_cast(_b); - return b->*Member / b->fCalled - a->*Member / a->fCalled; + Type valueA = a->*Member / a->fCalled; + Type valueB = b->*Member / b->fCalled; + + if (valueB > valueA) + return 1; + if (valueB < valueA) + return -1; + return 0; }