]> granicus.if.org Git - gc/commitdiff
2011-03-22 Ivan Maidanski <ivmai@mail.ru>
authorivmai <ivmai>
Tue, 22 Mar 2011 17:50:16 +0000 (17:50 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:57 +0000 (21:06 +0400)
* misc.c (GC_abort): Use _exit() (instead of DebugBreak) on Win32 when
doing code static analysis (to inform the tool that the function is
a no-return one).
* os_dep.c (GC_linux_stack_base): Remove a duplicate validation of the
length of "stat" file; use signed int type for "i", "buf_offset" and
"len" local variables (since read() may return -1).

ChangeLog
misc.c
os_dep.c

index 62c104240291d23c8f3051a94674308e40dda4b7..e4765d194c62f5d3211d043f0d8aa0bc8f2dfe05 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-03-22  Ivan Maidanski  <ivmai@mail.ru>
+
+       * misc.c (GC_abort): Use _exit() (instead of DebugBreak) on Win32 when
+       doing code static analysis (to inform the tool that the function is
+       a no-return one).
+       * os_dep.c (GC_linux_stack_base): Remove a duplicate validation of the
+       length of "stat" file; use signed int type for "i", "buf_offset" and
+       "len" local variables (since read() may return -1).
+
 2011-03-20  Ivan Maidanski  <ivmai@mail.ru>
 
        * blacklst.c (GC_bl_init_no_interiors): New function (the code
diff --git a/misc.c b/misc.c
index a81b11c5c2b888ff72903f32bf0458af9e595a08..0843bceee62e6a0045273007a885f0c6b2f79c15 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1389,7 +1389,7 @@ GC_API GC_warn_proc GC_CALL GC_get_warn_proc(void)
 #   ifndef LINT2
       if (!msg) return; /* to suppress compiler warnings in ABORT callers. */
 #   endif
-#   if defined(MSWIN32) && defined(NO_DEBUGGING)
+#   if defined(MSWIN32) && (defined(NO_DEBUGGING) || defined(LINT2))
       /* A more user-friendly abort after showing fatal message.        */
         _exit(-1); /* exit on error without running "at-exit" callbacks */
 #   elif defined(MSWINCE) && defined(NO_DEBUGGING)
index c876a09d320326b47a1fd6fa1cef0257e1a31d68..bc53d7ce1c172e2c5d4be671cbb92c30830d10eb 100644 (file)
--- a/os_dep.c
+++ b/os_dep.c
@@ -1047,7 +1047,7 @@ GC_INNER word GC_page_size = 0;
     char stat_buf[STAT_BUF_SIZE];
     int f;
     word result;
-    size_t i, buf_offset = 0, len;
+    int i, buf_offset = 0, len;
 
     /* First try the easy way.  This should work for glibc 2.2  */
     /* This fails in a prelinked ("prelink" command) executable */
@@ -1076,11 +1076,9 @@ GC_INNER word GC_page_size = 0;
       }
 #   endif
     f = open("/proc/self/stat", O_RDONLY);
-    if (f < 0
-        || (int)(len = (size_t)STAT_READ(f, stat_buf, STAT_BUF_SIZE))
-            < 2 * STAT_SKIP) {
-        ABORT("Couldn't read /proc/self/stat");
-    }
+    if (f < 0)
+      ABORT("Couldn't read /proc/self/stat");
+    len = STAT_READ(f, stat_buf, STAT_BUF_SIZE);
     close(f);
 
     /* Skip the required number of fields.  This number is hopefully    */