[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master c2b2a38f70f 07/11: Pacify GCC 14 -Wnull-dereference in tim_sort
From: |
Paul Eggert |
Subject: |
master c2b2a38f70f 07/11: Pacify GCC 14 -Wnull-dereference in tim_sort |
Date: |
Tue, 30 Apr 2024 04:26:37 -0400 (EDT) |
branch: master
commit c2b2a38f70f6c4639903a014db5b835b37669ea7
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 14 -Wnull-dereference in tim_sort
* src/lisp.h (tim_sort): Require array arg to be nonnull.
* src/sort.c (reverse_slice): Omit no-longer-needed eassert.
(tim_sort): Avoid undefined behavior when length == 0,
since reverse_slice would then compute &seq[-1].
---
src/lisp.h | 3 ++-
src/sort.c | 4 +---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/lisp.h b/src/lisp.h
index 4487948b007..bf928f51b17 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4301,7 +4301,8 @@ extern void mark_fns (void);
/* Defined in sort.c */
extern void tim_sort (Lisp_Object, Lisp_Object, Lisp_Object *, const ptrdiff_t,
- bool);
+ bool)
+ ARG_NONNULL ((3));
/* Defined in floatfns.c. */
verify (FLT_RADIX == 2 || FLT_RADIX == 16);
diff --git a/src/sort.c b/src/sort.c
index 808cd187dcf..02dad327cd4 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -38,8 +38,6 @@ along with GNU Emacs. If not, see
<https://www.gnu.org/licenses/>. */
static void
reverse_slice(Lisp_Object *lo, Lisp_Object *hi)
{
- eassert (lo && hi);
-
--hi;
while (lo < hi) {
Lisp_Object t = *lo;
@@ -1095,7 +1093,7 @@ tim_sort (Lisp_Object predicate, Lisp_Object keyfunc,
Lisp_Object *allocated_keys = NULL;
merge_state ms;
- if (reverse)
+ if (reverse && 0 < length)
reverse_slice (seq, seq + length); /* preserve stability */
if (NILP (keyfunc))
- master updated (d24981d27ce -> aad80e1934f), Paul Eggert, 2024/04/30
- master 7e2309c6fc6 02/11: etags: fix #line parsing (\\", long lines), Paul Eggert, 2024/04/30
- master de59c02c685 01/11: Simplify etags.c by omitting a macro, Paul Eggert, 2024/04/30
- master ca4f0705be5 03/11: etags: work around GCC bug 114882, Paul Eggert, 2024/04/30
- master 62c2afe8410 05/11: Pacify GCC 14 -Wnull-dereference, Paul Eggert, 2024/04/30
- master 98d0fc989a0 04/11: Pacify GCC 14 -Walloc-size, Paul Eggert, 2024/04/30
- master c2b2a38f70f 07/11: Pacify GCC 14 -Wnull-dereference in tim_sort,
Paul Eggert <=
- master aad80e1934f 11/11: Work around bad GCC diagnostic in select_window, Paul Eggert, 2024/04/30
- master 750dbccc124 08/11: Pacify GCC 14 -Wnull-dereference in intervals.c, Paul Eggert, 2024/04/30
- master c57a03c75e9 10/11: Pacify GCC 14 -Wanalyzer-out-of-bounds in hbfont.c, Paul Eggert, 2024/04/30
- master 59a11116e01 09/11: Pacify GCC 14 -Wstring-operflow in ftfont.c, Paul Eggert, 2024/04/30
- master 009a6ba71ea 06/11: Pacify GCC 14 -Wclobbered in eval.c, Paul Eggert, 2024/04/30