osReserveHeapMemory: handle signed rlim_t
authorFraser Tweedale <frase@frase.id.au>
Mon, 8 Apr 2019 07:27:06 +0000 (17:27 +1000)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Tue, 23 Apr 2019 13:27:30 +0000 (09:27 -0400)
rlim_t is a signed type on FreeBSD, and the build fails with a
sign-compare error.  Add explicit (unsigned) cast to handle this
case.

rts/posix/OSMem.c

index 6bec6b8..4e5c5c1 100644 (file)
@@ -546,10 +546,12 @@ void *osReserveHeapMemory(void *startAddressPtr, W_ *len)
 
 #if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_SYS_TIME_H)
     struct rlimit limit;
+    /* rlim_t is signed on some platforms, including FreeBSD;
+     * explicitly cast to avoid sign compare error */
     if (!getrlimit(RLIMIT_AS, &limit)
         && limit.rlim_cur > 0
-        && *len > limit.rlim_cur) {
-        *len = limit.rlim_cur;
+        && *len > (unsigned) limit.rlim_cur) {
+        *len = (unsigned) limit.rlim_cur;
     }
 #endif