diff --git a/miosix/kernel/intrusive.h b/miosix/kernel/intrusive.h index 36fa7c376d80eb9af753943d60abe0db67092bec..18c2656069556b0e8c914c0d9bfe61c9f78b25b8 100644 --- a/miosix/kernel/intrusive.h +++ b/miosix/kernel/intrusive.h @@ -669,10 +669,20 @@ public: T *cur; public: iterator(T *cur) : cur(cur) {} - iterator operator++() { cur = static_cast<T*>(cur->next); } - iterator operator--() { cur = static_cast<T*>(cur->prev); } - iterator operator++(int) { cur = static_cast<T*>(cur->next); } - iterator operator--(int) { cur = static_cast<T*>(cur->prev); } + iterator operator++() { cur = static_cast<T*>(cur->next); return *this; } + iterator operator--() { cur = static_cast<T*>(cur->prev); return *this; } + iterator operator++(int) + { + iterator result=*this; + cur = static_cast<T*>(cur->next); + return result; + } + iterator operator--(int) + { + iterator result=*this; + cur = static_cast<T*>(cur->prev); + return result; + } T* operator*() { return cur; } bool operator==(const iterator& rhs) { return cur==rhs.cur; } bool operator!=(const iterator& rhs) { return cur!=rhs.cur; }