Hi, I’m using vs2008 to compile the FreeRTOS V5.4.1 with win32 emulation (with unsigned short portTickType) . I’ve found a possible bug in the xTaskCheckForTimeOut() function using this enviroment: in tasks.c at line 1704: else if( ( ( portTickType ) xTickCount – ( portTickType ) pxTimeOut->xTimeOnEntering ) < ( portTickType ) *pxTicksToWait ) should be replace to: else if( ( portTickType )( xTickCount – pxTimeOut->xTimeOnEntering ) < ( portTickType ) *pxTicksToWait ) not doing this, the substraction will be converted to 32bit wide integert instead of "unsigned short", which could lead to other problems (invalid pxTicksToWait for example). I don’t know how it affects the other environments, but I hope this helps for somebody.
Those casts are new in V5.4.1 and intended to stop exactly the situation you describe. It worked for the code I was working on at the time, but it seems not all compilers. Can you add a bug report in the SourceForge tracker for this – that way it will get looked at again before the next release. Thanks and regards.
I’ve added this bug to the tracker! Regards!
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.