diff options
| author | Paul Eggert | 2022-05-12 17:01:10 -0700 |
|---|---|---|
| committer | Paul Eggert | 2022-05-12 17:03:55 -0700 |
| commit | 0f731c49e6a8ccf3aa4c30c3f8ca82ed0a2cefb7 (patch) | |
| tree | f675d5245b560aaaeae1c95f52df8ec882631d75 /src/alloc.c | |
| parent | 454caf858d92a87dc781bc35b421d5014a312bb9 (diff) | |
| download | emacs-0f731c49e6a8ccf3aa4c30c3f8ca82ed0a2cefb7.tar.gz emacs-0f731c49e6a8ccf3aa4c30c3f8ca82ed0a2cefb7.zip | |
Pacify GCC 12 in default developer build
This lets ‘./configure; make’ work on Fedora 36 x86-64 from a Git
checkout without generating false-alarm warnings.
* lib-src/etags.c (main): There appeared to be false alarm with
GCC 12. However, the code was wrong anyway, as it mishandled file
names containing "'" so fix that bug. This pacifies GCC.
(mercury_decl): Omit tests ‘s + pos != NULL’ that were apparently
intended to be ‘s[pos] != '\0'’ but which were miscoded to always
be true and which were mostly not needed anyway. In one place,
though, a test was needed, so fix that by using strchr instead.
* src/alloc.c (lisp_free) [!GC_MALLOC_CHECK]:
* src/term.c (Fsuspend_tty): Don’t look at a pointer after freeing
it, even just to test it for equality with some other pointer, as
this has undefined behavior in C and GCC 12 diagnoses this.
* src/dbusbind.c (xd_read_message_1): Rework the code a bit
so that it has fewer tests. This pacifies GCC 12 which was
complaining incorrectly about dereferencing a null pointer.
* src/intervals.c (copy_properties): Remove an eassume that should
no longer be needed even to pacify older GCCs, due to ...
* src/intervals.h (split_interval_left): ... this addition of
ATTRIBUTE_RETURNS_NONNULL to pacify a GCC 12 warning about
dereferencing a null pointer.
* src/regex-emacs.c (EXTEND_BUFFER): Use negative values rather
than auxiliary booleans to indicate null pointers. This pacifies
GCC 12 false alarms about using uninitialized variables.
* src/xdisp.c (clear_position): New function.
(append_space_for_newline, extend_face_to_end_of_line):
Use it to work around false alarms from GCC 12.
(display_and_set_cursor): Add an UNINIT to pacify GCC 12.
* src/xterm.c (x_draw_glyphless_glyph_string_foreground):
Defend against hypothetical bad code elsewhere;
this also pacifies GCC 12.
(x_term_init): Use fixed-size auto array rather than alloca,
as the array is small; this also pacifies GCC 12.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/alloc.c b/src/alloc.c index 43fbbb79bed..3cfc3d61ddd 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1032,9 +1032,12 @@ lisp_free (void *block) | |||
| 1032 | return; | 1032 | return; |
| 1033 | 1033 | ||
| 1034 | MALLOC_BLOCK_INPUT; | 1034 | MALLOC_BLOCK_INPUT; |
| 1035 | #ifndef GC_MALLOC_CHECK | ||
| 1036 | struct mem_node *m = mem_find (block); | ||
| 1037 | #endif | ||
| 1035 | free (block); | 1038 | free (block); |
| 1036 | #ifndef GC_MALLOC_CHECK | 1039 | #ifndef GC_MALLOC_CHECK |
| 1037 | mem_delete (mem_find (block)); | 1040 | mem_delete (m); |
| 1038 | #endif | 1041 | #endif |
| 1039 | MALLOC_UNBLOCK_INPUT; | 1042 | MALLOC_UNBLOCK_INPUT; |
| 1040 | } | 1043 | } |