On 1/5/22 10:00, Bruno Haible wrote:
Another possible fix would be to change
size_t size;
to
idx_t size;
in the struct.
Yes, that fits better into our strategy of preferring signed to unsigned
types for sizes. Plus, it avoids a cast that's too powerful in C. I
installed the attached.From 403968da56573bdbdcab79adabddcdc270e05cc9 Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Wed, 5 Jan 2022 11:37:26 -0800
Subject: [PATCH 1/2] stack: pacify gcc -Wsign-compare
* lib/stack.h (_GL_STACK_TYPE): Use idx_t for size too.
Suggested by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2022-01/msg00035.html
---
ChangeLog | 7 +++++++
lib/stack.h | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index ad29aed978..609720a451 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2022-01-05 Paul Eggert <egg...@cs.ucla.edu>
+
+ stack: pacify gcc -Wsign-compare
+ * lib/stack.h (_GL_STACK_TYPE): Use idx_t for size too.
+ Suggested by Bruno Haible in:
+ https://lists.gnu.org/r/bug-gnulib/2022-01/msg00035.html
+
2022-01-05 Bruno Haible <br...@clisp.org>
Fix last commit.
diff --git a/lib/stack.h b/lib/stack.h
index 26fdbad770..b4c35535a7 100644
--- a/lib/stack.h
+++ b/lib/stack.h
@@ -77,7 +77,7 @@
typedef struct
{
GL_STACK_ELEMENT *base;
- size_t size;
+ idx_t size;
idx_t allocated;
} _GL_STACK_TYPE;
--
2.32.0
From 9d3ec33a02dccaaa930f839752304d1b8d0b903e Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Wed, 5 Jan 2022 11:51:38 -0800
Subject: [PATCH 2/2] stack: also update stack_size to return idx_t
* lib/stack.h (_GL_STACK_PREFIX (size)): Return idx_t, not size_t.
---
ChangeLog | 1 +
NEWS | 3 +++
lib/stack.h | 6 +++---
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 609720a451..4829d58e83 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
* lib/stack.h (_GL_STACK_TYPE): Use idx_t for size too.
Suggested by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2022-01/msg00035.html
+ (_GL_STACK_PREFIX (size)): Return idx_t, not size_t.
2022-01-05 Bruno Haible <br...@clisp.org>
diff --git a/NEWS b/NEWS
index 2ce1c73014..c13a115ada 100644
--- a/NEWS
+++ b/NEWS
@@ -66,6 +66,9 @@ User visible incompatible changes
Date Modules Changes
+2022-01-05 stack This module now uses idx_t instead of size_t
+ for indexes and counts.
+
2021-08-27 base32 These modules now use idx_t instead of size_t
base64 for indexes and counts.
diff --git a/lib/stack.h b/lib/stack.h
index b4c35535a7..28b9d7a542 100644
--- a/lib/stack.h
+++ b/lib/stack.h
@@ -17,7 +17,7 @@
/* Written by Marc Nieper-Wißkirchen <m...@nieper-wisskirchen.de>, 2020. */
/* This header file does not have include-guards as it is meant to be
- includeable multiple times as long as the necessary defines have
+ includable multiple times as long as the necessary defines have
been set up.
A stack is implemented with a homogenous array of elements in
@@ -36,7 +36,7 @@
Popping: ELEMENT element = stack_pop (&stack);
Discarding: stack_discard (&stack);
Top-of-stack: ELEMENT element = stack_top (&stack);
- Size: size_t size = stack_size (&stack);
+ Size: idx_t size = stack_size (&stack);
Here, ELEMENT is the type to which GL_STACK_ELEMENT was defined when
this file was included.
@@ -152,7 +152,7 @@ _GL_STACK_PREFIX (top) (const _GL_STACK_TYPE *stack)
}
/* Return the currently stored number of elements in the stack. */
-GL_STACK_STORAGECLASS _GL_ATTRIBUTE_PURE size_t
+GL_STACK_STORAGECLASS _GL_ATTRIBUTE_PURE idx_t
_GL_STACK_PREFIX (size) (const _GL_STACK_TYPE *stack)
{
return stack->size;
--
2.32.0