]> granicus.if.org Git - gc/commitdiff
Really abort if failed to read /proc for library registration (Linux)
authorIvan Maidanski <ivmai@mail.ru>
Fri, 4 May 2018 08:15:55 +0000 (11:15 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 6 Jul 2018 12:37:53 +0000 (15:37 +0300)
* dyn_load.c [USE_PROC_FOR_LIBRARIES] (GC_register_map_entries):
Change return type from word to void; remove "return 1".
* dyn_load.c [USE_PROC_FOR_LIBRARIES] (GC_register_dynamic_libraries):
Call ABORT() if GC_get_maps() returned null.
* os_dep.c [NEED_PROC_MAPS] (GC_get_maps): Remove outdated comment
(about fn).

dyn_load.c
os_dep.c

index aaef2a07c6a710f6ece5f082dc97431ab20fbe4f..8e2026bdab729f14ff0b6009312094d80433d058 100644 (file)
@@ -306,7 +306,7 @@ static void sort_heap_sects(struct HeapSect *base, size_t number_of_elements)
     }
 }
 
-STATIC word GC_register_map_entries(char *maps)
+STATIC void GC_register_map_entries(char *maps)
 {
     char *prot;
     char *buf_ptr = maps;
@@ -324,7 +324,8 @@ STATIC word GC_register_map_entries(char *maps)
     for (;;) {
         buf_ptr = GC_parse_map_entry(buf_ptr, &start, &end, &prot,
                                      &maj_dev, 0);
-        if (buf_ptr == NULL) return 1;
+        if (NULL == buf_ptr)
+            break;
         if (prot[1] == 'w') {
             /* This is a writable mapping.  Add it to           */
             /* the root set unless it is already otherwise      */
@@ -391,13 +392,15 @@ STATIC word GC_register_map_entries(char *maps)
                   GC_add_roots_inner((char *)start, (char *)end, TRUE);
         }
     }
-    return 1;
 }
 
 GC_INNER void GC_register_dynamic_libraries(void)
 {
-    if (!GC_register_map_entries(GC_get_maps()))
+    char *maps = GC_get_maps();
+
+    if (NULL == maps)
         ABORT("Failed to read /proc for library registration");
+    GC_register_map_entries(maps);
 }
 
 /* We now take care of the main data segment ourselves: */
index f2c549b803ba952f64d1eb267c74a73b4c12d047..74891f465110ff1dd0cc889cd0778b8384c6f60d 100644 (file)
--- a/os_dep.c
+++ b/os_dep.c
@@ -239,8 +239,6 @@ GC_INNER char * GC_get_maps(void)
         } while (maps_size >= maps_buf_sz || maps_size < old_maps_size);
                 /* In the single-threaded case, the second clause is false. */
         maps_buf[maps_size] = '\0';
-
-        /* Apply fn to result.  */
         return maps_buf;
 }