[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 14/25] tools/xenstore: change talloc_free() to take a const pointer



Hi Juergen,

On 24/07/2023 12:02, Juergen Gross wrote:
With talloc_free() and related functions not taking a ponter to const

typo: s/ponter/pointer/

it is tedious to use the const attribute for talloc()-ed memory in
many cases.

Change the related prototypes to use "const void *" instead of
"void *".

Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
---
V3:
- new patch
---
  tools/xenstore/talloc.c | 8 ++++----
  tools/xenstore/talloc.h | 4 ++--
  2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/xenstore/talloc.c b/tools/xenstore/talloc.c
index 23c3a23b19..4f08dbec59 100644
--- a/tools/xenstore/talloc.c
+++ b/tools/xenstore/talloc.c
@@ -319,7 +319,7 @@ static int talloc_unreference(const void *context, const 
void *ptr)
    remove a specific parent context from a pointer. This is a more
    controlled varient of talloc_free()
  */
-int talloc_unlink(const void *context, void *ptr)
+int talloc_unlink(const void *context, const void *ptr)
  {
        struct talloc_chunk *tc_p, *new_p;
        void *new_parent;
@@ -499,7 +499,7 @@ void *talloc_init(const char *fmt, ...)
    should probably not be used in new code. It's in here to keep the talloc
    code consistent across Samba 3 and 4.
  */
-static void talloc_free_children(void *ptr)
+static void talloc_free_children(const void *ptr)
  {
        struct talloc_chunk *tc;
@@ -539,7 +539,7 @@ static void talloc_free_children(void *ptr)
     will not be freed if the ref_count is > 1 or the destructor (if
     any) returns non-zero
  */
-int talloc_free(void *ptr)
+int talloc_free(const void *ptr)
  {
        int saved_errno = errno;
        struct talloc_chunk *tc;
@@ -571,7 +571,7 @@ int talloc_free(void *ptr)
                        goto err;
                }
                tc->destructor = (talloc_destructor_t)-1;
-               if (d(ptr) == -1) {
+               if (d((void *)ptr) == -1) {

AFAICT, you can't propagate the const because the destructor may need to modify the content. I guess this is a necessary evil here but it would be good to document it.

Cheers,

--
Julien Grall



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.