http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57813

Daniel Oertwig <daniel.oertwig at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |---

--- Comment #4 from Daniel Oertwig <daniel.oertwig at gmail dot com> ---

Task * Task_getNextReady()
{
    uint8_t priority;
    if (taskInfo.ready[0]) priority = 0;
    else if (taskInfo.ready[1]) priority = 1;
    else if (taskInfo.ready[2]) priority = 2;
    else if (taskInfo.ready[3]) priority = 3;
    else if (taskInfo.ready[4]) priority = 4;
    else if (taskInfo.ready[5]) priority = 5;
    else if (taskInfo.ready[6]) priority = 6;
    else priority = 7;
    time_t delay = Task_enforceTimeslice(priority);
    Task * next = taskInfo.ready[priority];
    next->wakeTime = delay;
    return next;
}

This code solves the issue, using the correct value of the global variable.
Please tell me if I am wrong, but I think this code should be equivalent to the
original code.

(Task_enforceTimeslice is not declared as pure, I checked just to be sure)

Reply via email to