]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge remote-tracking branch 'origin/master' into scratch/pkg
authorGerd Möllmann <gerd@gnu.org>
Mon, 19 Dec 2022 13:25:27 +0000 (14:25 +0100)
committerGerd Möllmann <gerd@gnu.org>
Mon, 19 Dec 2022 13:25:27 +0000 (14:25 +0100)
13 files changed:
1  2 
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/macroexp.el
lisp/minibuffer.el
src/alloc.c
src/editfns.c
src/emacs.c
src/fns.c
src/image.c
src/lisp.h
src/lread.c
src/pdumper.c
src/treesit.c
src/xfaces.c

Simple merge
Simple merge
Simple merge
diff --cc src/alloc.c
index 91a3237c57f8da9ff6cf87da890ff1622b29476c,2975754124af1ef7b514fa1680d62227045cf871..a9eff612de8cdcc6ea7fcc4012f9efe9016cc378
@@@ -3705,8 -3865,9 +3909,9 @@@ Its value is void, and its function def
  
    if (symbol_free_list)
      {
+       ASAN_UNPOISON_SYMBOL (symbol_free_list);
        XSETSYMBOL (val, symbol_free_list);
 -      symbol_free_list = symbol_free_list->u.s.next;
 +      symbol_free_list = next_free_symbol (symbol_free_list);
      }
    else
      {
@@@ -4702,10 -4888,14 +4932,14 @@@ live_symbol_holding (struct mem_node *m
          || off == offsetof (struct Lisp_Symbol, u.s.name)
          || off == offsetof (struct Lisp_Symbol, u.s.val)
          || off == offsetof (struct Lisp_Symbol, u.s.function)
 -        || off == offsetof (struct Lisp_Symbol, u.s.plist)
 -        || off == offsetof (struct Lisp_Symbol, u.s.next))
 +        || off == offsetof (struct Lisp_Symbol, u.s.package)
 +        || off == offsetof (struct Lisp_Symbol, u.s.plist))
        {
          struct Lisp_Symbol *s = p = cp -= off;
+ #if GC_ASAN_POISON_OBJECTS
+         if (__asan_region_is_poisoned (s, sizeof (*s)))
+           return NULL;
+ #endif
          if (!deadp (s->u.s.function))
            return s;
        }
@@@ -7141,10 -7601,11 +7395,11 @@@ sweep_symbols (void
                       time we sweep this symbol_block (bug#29066).  */
                    sym->u.s.redirect = SYMBOL_PLAINVAL;
                  }
 -              sym->u.s.next = symbol_free_list;
 +              set_next_free_symbol (sym, symbol_free_list);
                symbol_free_list = sym;
                symbol_free_list->u.s.function = dead_object ();
-               ++this_free;
+             ASAN_POISON_SYMBOL (sym);
+             ++this_free;
              }
            else
              {
          {
            *sprev = sblk->next;
            /* Unhook from the free list.  */
 -          symbol_free_list = sblk->symbols[0].u.s.next;
+         ASAN_UNPOISON_SYMBOL (&sblk->symbols[0]);
 +          symbol_free_list = next_free_symbol (&sblk->symbols[0]);
            lisp_free (sblk);
          }
        else
diff --cc src/editfns.c
Simple merge
diff --cc src/emacs.c
Simple merge
diff --cc src/fns.c
Simple merge
diff --cc src/image.c
Simple merge
diff --cc src/lisp.h
Simple merge
diff --cc src/lread.c
Simple merge
diff --cc src/pdumper.c
Simple merge
diff --cc src/treesit.c
Simple merge
diff --cc src/xfaces.c
Simple merge