diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/alloc.c b/src/alloc.c index faad0b59c87..1019c2af6cc 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -4934,6 +4934,10 @@ valid_pointer_p (void *p) | |||
| 4934 | #ifdef WINDOWSNT | 4934 | #ifdef WINDOWSNT |
| 4935 | return w32_valid_pointer_p (p, 16); | 4935 | return w32_valid_pointer_p (p, 16); |
| 4936 | #else | 4936 | #else |
| 4937 | |||
| 4938 | if (ADDRESS_SANITIZER) | ||
| 4939 | return p ? -1 : 0; | ||
| 4940 | |||
| 4937 | int fd[2]; | 4941 | int fd[2]; |
| 4938 | 4942 | ||
| 4939 | /* Obviously, we cannot just access it (we would SEGV trying), so we | 4943 | /* Obviously, we cannot just access it (we would SEGV trying), so we |
| @@ -4949,7 +4953,7 @@ valid_pointer_p (void *p) | |||
| 4949 | return valid; | 4953 | return valid; |
| 4950 | } | 4954 | } |
| 4951 | 4955 | ||
| 4952 | return -1; | 4956 | return -1; |
| 4953 | #endif | 4957 | #endif |
| 4954 | } | 4958 | } |
| 4955 | 4959 | ||
| @@ -5048,8 +5052,8 @@ relocatable_string_data_p (const char *str) | |||
| 5048 | struct sdata *sdata | 5052 | struct sdata *sdata |
| 5049 | = (struct sdata *) (str - offsetof (struct sdata, data)); | 5053 | = (struct sdata *) (str - offsetof (struct sdata, data)); |
| 5050 | 5054 | ||
| 5051 | if (valid_pointer_p (sdata) | 5055 | if (0 < valid_pointer_p (sdata) |
| 5052 | && valid_pointer_p (sdata->string) | 5056 | && 0 < valid_pointer_p (sdata->string) |
| 5053 | && maybe_lisp_pointer (sdata->string)) | 5057 | && maybe_lisp_pointer (sdata->string)) |
| 5054 | return (valid_lisp_object_p | 5058 | return (valid_lisp_object_p |
| 5055 | (make_lisp_ptr (sdata->string, Lisp_String)) | 5059 | (make_lisp_ptr (sdata->string, Lisp_String)) |
| @@ -6364,7 +6368,7 @@ mark_object (Lisp_Object arg) | |||
| 6364 | CHECK_ALLOCATED_AND_LIVE (live_symbol_p); | 6368 | CHECK_ALLOCATED_AND_LIVE (live_symbol_p); |
| 6365 | ptr->gcmarkbit = 1; | 6369 | ptr->gcmarkbit = 1; |
| 6366 | /* Attempt to catch bogus objects. */ | 6370 | /* Attempt to catch bogus objects. */ |
| 6367 | eassert (valid_lisp_object_p (ptr->function) >= 1); | 6371 | eassert (valid_lisp_object_p (ptr->function)); |
| 6368 | mark_object (ptr->function); | 6372 | mark_object (ptr->function); |
| 6369 | mark_object (ptr->plist); | 6373 | mark_object (ptr->plist); |
| 6370 | switch (ptr->redirect) | 6374 | switch (ptr->redirect) |
| @@ -6749,7 +6753,7 @@ sweep_symbols (void) | |||
| 6749 | ++num_used; | 6753 | ++num_used; |
| 6750 | sym->s.gcmarkbit = 0; | 6754 | sym->s.gcmarkbit = 0; |
| 6751 | /* Attempt to catch bogus objects. */ | 6755 | /* Attempt to catch bogus objects. */ |
| 6752 | eassert (valid_lisp_object_p (sym->s.function) >= 1); | 6756 | eassert (valid_lisp_object_p (sym->s.function)); |
| 6753 | } | 6757 | } |
| 6754 | } | 6758 | } |
| 6755 | 6759 | ||