diff options
| author | Paul Eggert | 2019-09-03 17:34:08 -0700 |
|---|---|---|
| committer | Paul Eggert | 2019-09-03 17:34:50 -0700 |
| commit | d20655669bd6f94cdd9fb2472668e92a069c0cf2 (patch) | |
| tree | 610e9a9ea0948470c015568ca1e7ccf8bcdd03ef /src/alloc.c | |
| parent | 5f089ac93f18fbd6e8131b81e1c6b403894b5759 (diff) | |
| download | emacs-d20655669bd6f94cdd9fb2472668e92a069c0cf2.tar.gz emacs-d20655669bd6f94cdd9fb2472668e92a069c0cf2.zip | |
Avoid casting -1 to possibly-unsigned enum
* src/alloc.c (mark_maybe_pointer):
* src/pdumper.h (pdumper_object_p_precise):
Use pdumper_valid_object_type_p.
* src/pdumper.c (pdumper_find_object_type_impl):
* src/pdumper.h (pdumper_find_object_type):
Return int, not enum Lisp_Type. All callers changed.
* src/pdumper.h (PDUMPER_NO_OBJECT): Do not cast -1 to enum
Lisp_Type; in theory, C18 says this could yield 7, which would
mean PDUMPER_NO_OBJECT == Lisp_Float (!).
(pdumper_valid_object_type_p): New function.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/alloc.c b/src/alloc.c index 5f8ef0a5dda..089f61f8339 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -4617,11 +4617,11 @@ mark_maybe_pointer (void *p) | |||
| 4617 | 4617 | ||
| 4618 | if (pdumper_object_p (p)) | 4618 | if (pdumper_object_p (p)) |
| 4619 | { | 4619 | { |
| 4620 | enum Lisp_Type type = pdumper_find_object_type (p); | 4620 | int type = pdumper_find_object_type (p); |
| 4621 | if (type != PDUMPER_NO_OBJECT) | 4621 | if (pdumper_valid_object_type_p (type)) |
| 4622 | mark_object ((type == Lisp_Symbol) | 4622 | mark_object (type == Lisp_Symbol |
| 4623 | ? make_lisp_symbol(p) | 4623 | ? make_lisp_symbol (p) |
| 4624 | : make_lisp_ptr(p, type)); | 4624 | : make_lisp_ptr (p, type)); |
| 4625 | /* See mark_maybe_object for why we can confidently return. */ | 4625 | /* See mark_maybe_object for why we can confidently return. */ |
| 4626 | return; | 4626 | return; |
| 4627 | } | 4627 | } |