Hi, Yes it's probably the cause, thanks.
On 05/07/2014 12:49 PM, Alex Bligh wrote: > > On 7 May 2014, at 09:36, Stanislav Vorobiov wrote: > >> Hi, >> >> Hm, but (int)res expression is not unsigned, it's signed. I've also had this >> warning, >> but with this expression: (res < WAIT_OBJECT_0), that's why I put (int) >> there. Could it be that >> for some reason your compiler treats "int" and "unsigned int", that would be >> really strange though... > > I suspect the problem is that WAIT_OBJECT_0 is defined as an unsigned long: > > #define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 ) > > #define STATUS_WAIT_0 ((DWORD)0x00000000L) > > So IIRC under the 'usual conversions', and int compared with it will be cast > to an unsigned long too. > > I think you want to cast WAIT_OBJECT_0 to a long or similar. > > Alex > > >> On 05/07/2014 12:02 PM, Stefan Hajnoczi wrote: >>> On Fri, Apr 18, 2014 at 08:24:03PM +0400, Stanislav Vorobiov wrote: >>> >>> Please fix the following compiler warning with gcc 4.8.2: >>> >>>> + } else if ((res == WAIT_TIMEOUT) || (res == WAIT_IO_COMPLETION) || >>>> + ((int)res < WAIT_OBJECT_0) || >>>> + (res >= (WAIT_OBJECT_0 + nhandles))) { >>>> + break; >>>> + } >>> >>> util/oslib-win32.c: In function 'g_poll_fixed': >>> util/oslib-win32.c:324:21: warning: comparison of unsigned expression < 0 >>> is always false [-Wtype-limits] >>> ((int)res < WAIT_OBJECT_0) || >>> ^ >>> >> >> >> >