From: Nobuyoshi Nakada <nobu@...>
Date: 2012-03-12T12:54:48+09:00
Subject: [ruby-core:43241] [ruby-trunk - Bug #5833][Closed] [mingw] trivial patch for thread.c build warning


Issue #5833 has been updated by Nobuyoshi Nakada.

Status changed from Open to Closed


----------------------------------------
Bug #5833: [mingw] trivial patch for thread.c build warning
https://bugs.ruby-lang.org/issues/5833

Author: Jon Forums
Status: Closed
Priority: Normal
Assignee: Akira Tanaka
Category: core
Target version: 2.0.0
ruby -v: -


When building with MinGW (not Windows SDK) on Win7 I get the following:

compiling ../../../../Users/Jon/Documents/RubyDev/ruby-git/thread.c
../../../../Users/Jon/Documents/RubyDev/ruby-git/thread.c: In function 'rb_fd_rcopy':
../../../../Users/Jon/Documents/RubyDev/ruby-git/thread.c:2471:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]


Below is a trivial patch that fixes the warning on MinGW. The patch successfully builds and tests with MinGW and Windows SDK on Win7 32bit. When building on Arch Linux, the patched build gives the same `make test && make test-all` results (6 errors, 45 skips) as an unpatched build. In all other uses in `thread.c` (except for `rb_fd_rcopy`) the `rb_fd_max` macro generates a `size_t` object. From what I can tell, use cases are all unsigned int's.

diff --git a/thread.c b/thread.c
index d9fe5506..0b48061 100644
--- a/thread.c
+++ b/thread.c
@@ -2463,7 +2463,7 @@ rb_fd_init_copy(rb_fdset_t *dst, rb_fdset_t *src)
 static void
 rb_fd_rcopy(fd_set *dst, rb_fdset_t *src)
 {
-    int max = rb_fd_max(src);
+    size_t max = rb_fd_max(src);
 
     /* we assume src is the result of select() with dst, so dst should be
      * larger or equal than src. */



-- 
http://bugs.ruby-lang.org/