You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/11/23 15:22:14 UTC
[incubator-nuttx] 01/02: obstack/obstack_free: Fix incorrect usage of void* for arithmetics
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit 4781379ee20bb74f031be61fb72d21121e7c7328
Author: Ville Juven <vi...@unikie.com>
AuthorDate: Wed Nov 23 11:26:08 2022 +0200
obstack/obstack_free: Fix incorrect usage of void* for arithmetics
Using void* for arithmetics is a GCC extension, and thus should not be
used for portable code.
---
libs/libc/obstack/lib_obstack_finish.c | 4 ++--
libs/libc/obstack/lib_obstack_free.c | 3 ++-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/libs/libc/obstack/lib_obstack_finish.c b/libs/libc/obstack/lib_obstack_finish.c
index 6c5fbcfc56..5cf1595b5a 100644
--- a/libs/libc/obstack/lib_obstack_finish.c
+++ b/libs/libc/obstack/lib_obstack_finish.c
@@ -66,10 +66,10 @@ FAR void *obstack_finish(FAR struct obstack *h)
{
chsize = h->next_free - (FAR char *)h->chunk;
h->chunk = lib_obstack_realloc(h->chunk, chsize);
- h->chunk->limit = (FAR void *)h->chunk + chsize;
+ h->chunk->limit = (FAR char *)h->chunk + chsize;
h->object_base = h->chunk->limit;
h->next_free = h->chunk->limit;
- return (FAR void *)h->chunk + sizeof(struct _obstack_chunk);
+ return (FAR char *)h->chunk + sizeof(struct _obstack_chunk);
}
return obstack_finish_norealloc(h);
diff --git a/libs/libc/obstack/lib_obstack_free.c b/libs/libc/obstack/lib_obstack_free.c
index 460e27f054..6d5437de00 100644
--- a/libs/libc/obstack/lib_obstack_free.c
+++ b/libs/libc/obstack/lib_obstack_free.c
@@ -51,7 +51,8 @@ void obstack_free(FAR struct obstack *h, FAR void *object)
while (h->chunk)
{
- if (object >= (FAR void *)&h->chunk + sizeof(struct _obstack_chunk)
+ if (object >=
+ (FAR void *)((FAR char *)&h->chunk + sizeof(struct _obstack_chunk))
&& object < (FAR void *)h->chunk->limit)
{
/* The object is in this chunk so just move object base.