diff options
| author | Vibhav Pant | 2017-01-30 12:03:23 +0530 |
|---|---|---|
| committer | Vibhav Pant | 2017-01-30 12:03:23 +0530 |
| commit | 9c4dfdd1af9f97c6a8d7e922b68a39052116790c (patch) | |
| tree | 1fb54fcb7d5eaa61ed88ea67ee9d17fde112bc4a /src/image.c | |
| parent | 8ba236e772b64d0bb021aa691bd7eacf4b7f3ae4 (diff) | |
| download | emacs-9c4dfdd1af9f97c6a8d7e922b68a39052116790c.tar.gz emacs-9c4dfdd1af9f97c6a8d7e922b68a39052116790c.zip | |
Fix hash tables not being purified correctly.
* src/alloc.c
(purecopy_hash_table) New function, makes a copy of the given hash
table in pure storage.
Add new struct `pinned_object' and `pinned_objects' linked list for
pinning objects.
(Fpurecopy) Allow purifying hash tables
(purecopy) Pin hash tables that are either weak or not declared with
`:purecopy t`, use purecopy_hash_table otherwise.
(marked_pinned_objects) New function, marks all objects in pinned_objects.
(garbage_collect_1) Use it. Mark all pinned objects before sweeping.
* src/lisp.h Add new field `pure' to struct `Lisp_Hash_Table'.
* src/fns.c: Add `purecopy' parameter to hash tables.
(Fmake_hash_table): Check for a `:purecopy PURECOPY' argument, pass it
to make_hash_table.
(make_hash_table): Add `pure' parameter, set h->pure to it.
(Fclrhash, Fremhash, Fputhash): Enforce that the table is impure with
CHECK_IMPURE.
* src/lread.c: (read1) Parse for `purecopy' parameter while reading
hash tables.
* src/print.c: (print_object) add the `purecopy' parameter while
printing hash tables.
* src/category.c, src/emacs-module.c, src/image.c, src/profiler.c,
src/xterm.c: Use new (make_hash_table).
Diffstat (limited to 'src/image.c')
| -rw-r--r-- | src/image.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/image.c b/src/image.c index 39677d2add9..ad0143be48b 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -4020,7 +4020,7 @@ xpm_make_color_table_h (void (**put_func) (Lisp_Object, const char *, int, | |||
| 4020 | return make_hash_table (hashtest_equal, make_number (DEFAULT_HASH_SIZE), | 4020 | return make_hash_table (hashtest_equal, make_number (DEFAULT_HASH_SIZE), |
| 4021 | make_float (DEFAULT_REHASH_SIZE), | 4021 | make_float (DEFAULT_REHASH_SIZE), |
| 4022 | make_float (DEFAULT_REHASH_THRESHOLD), | 4022 | make_float (DEFAULT_REHASH_THRESHOLD), |
| 4023 | Qnil); | 4023 | Qnil, Qnil); |
| 4024 | } | 4024 | } |
| 4025 | 4025 | ||
| 4026 | static void | 4026 | static void |