emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 93c0527: Fix a small pdumper memory leak


From: Paul Eggert
Subject: [Emacs-diffs] master 93c0527: Fix a small pdumper memory leak
Date: Mon, 11 Mar 2019 11:21:46 -0400 (EDT)

branch: master
commit 93c0527a6afbdd5228ff5590d03a35f738a47d18
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Fix a small pdumper memory leak
    
    * src/pdumper.c (dump_mmap_reset): Free the private area here ...
    (dump_mm_heap_cb_release): ... instead of here.
    (dump_mmap_release_heap): Simplify by avoiding a local.
    (dump_mmap_contiguous): Reindent GNU style.
---
 src/pdumper.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/src/pdumper.c b/src/pdumper.c
index dd272a0..36a06d9 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -1950,7 +1950,7 @@ dump_field_fixup_later (struct dump_context *ctx,
                         const void *in_start,
                         const void *in_field)
 {
-  // TODO: more error checking
+  /* TODO: more error checking.  */
   (void) field_relpos (in_start, in_field);
 }
 
@@ -2067,7 +2067,7 @@ dump_interval_tree (struct dump_context *ctx,
 #if CHECK_STRUCTS && !defined (HASH_interval_1B38941C37)
 # error "interval changed. See CHECK_STRUCTS comment."
 #endif
-  // TODO: output tree breadth-first?
+  /* TODO: output tree breadth-first?  */
   struct interval out;
   dump_object_start (ctx, &out, sizeof (out));
   DUMP_FIELD_COPY (&out, tree, total_length);
@@ -4100,7 +4100,7 @@ types.  */)
   /* We want to consolidate certain object types that we know are very likely
      to be modified.  */
   ctx->flags.defer_hash_tables = true;
-  // ctx->flags.defer_symbols = true;  XXX
+  /* ctx->flags.defer_symbols = true; XXX  */
 
   /* These objects go into special sections.  */
   ctx->flags.defer_cold_objects = true;
@@ -4701,7 +4701,9 @@ dump_mmap_reset (struct dump_memory_map *map)
 {
   map->mapping = NULL;
   map->release = NULL;
+  void *private = map->private;
   map->private = NULL;
+  free (private);
 }
 
 static void
@@ -4723,17 +4725,13 @@ dump_mm_heap_cb_release (struct 
dump_memory_map_heap_control_block *cb)
 {
   eassert (cb->refcount > 0);
   if (--cb->refcount == 0)
-    {
-      free (cb->mem);
-      free (cb);
-    }
+    free (cb->mem);
 }
 
 static void
 dump_mmap_release_heap (struct dump_memory_map *map)
 {
-  struct dump_memory_map_heap_control_block *cb = map->private;
-  dump_mm_heap_cb_release (cb);
+  dump_mm_heap_cb_release (map->private);
 }
 
 /* Implement dump_mmap using malloc and read.  */
@@ -4932,9 +4930,7 @@ dump_mmap_contiguous (
       total_size += maps[i].spec.size;
     }
 
-  return (VM_SUPPORTED ?
-          dump_mmap_contiguous_vm :
-          dump_mmap_contiguous_heap)
+  return (VM_SUPPORTED ? dump_mmap_contiguous_vm : dump_mmap_contiguous_heap)
     (maps, nr_maps, total_size);
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]