Index: src/OFStreamObserver_kqueue.m ================================================================== --- src/OFStreamObserver_kqueue.m +++ src/OFStreamObserver_kqueue.m @@ -103,12 +103,12 @@ void *pool = objc_autoreleasePoolPush(); struct timespec timespec; struct kevent eventList[EVENTLIST_SIZE]; int i, events, realEvents = 0; - timespec.tv_sec = timeout; - timespec.tv_nsec = (timeout - timespec.tv_sec) * 1000000000; + timespec.tv_sec = (time_t)timeout; + timespec.tv_nsec = (long)((timeout - timespec.tv_sec) * 1000000000); [self OF_processQueue]; if ([self OF_processCache]) { objc_autoreleasePoolPop(pool); Index: src/OFStreamObserver_poll.m ================================================================== --- src/OFStreamObserver_poll.m +++ src/OFStreamObserver_poll.m @@ -142,11 +142,11 @@ if (nFDs > OPEN_MAX) @throw [OFOutOfRangeException exceptionWithClass: [self class]]; #endif if (poll(FDsCArray, (nfds_t)nFDs, - (timeout != -1 ? timeout * 1000 : -1)) < 1) + (int)(timeout != -1 ? timeout * 1000 : -1)) < 1) return NO; for (i = 0; i < nFDs; i++) { pool = objc_autoreleasePoolPush(); Index: src/OFStreamObserver_select.m ================================================================== --- src/OFStreamObserver_select.m +++ src/OFStreamObserver_select.m @@ -96,12 +96,18 @@ readFDs_ = readFDs; writeFDs_ = writeFDs; exceptFDs_ = exceptFDs; #endif - time.tv_sec = timeout; - time.tv_usec = (timeout - time.tv_sec) * 1000; + /* + * We cast to int before assigning to tv_usec in order to avoid a + * warning with Apple GCC on PPC. POSIX defines this as suseconds_t, + * however, this is not available on Win32. As an int should always + * satisfy the required range, we just cast to int. + */ + time.tv_sec = (time_t)timeout; + time.tv_usec = (int)((timeout - time.tv_sec) * 1000); if (select((int)maxFD + 1, &readFDs_, &writeFDs_, &exceptFDs_, (timeout != -1 ? &time : NULL)) < 1) return NO;