From 2fb0672b4058a81fd977d75865ea3c3aaded4fb6 Mon Sep 17 00:00:00 2001 From: Bruno Haible <bruno@clisp.org> Date: Sat, 7 Aug 2021 19:00:42 +0200 Subject: [PATCH] argp: Improve GCC 11 allocation-deallocation checking. * lib/argp-fmtstream.h (__argp_fmtstream_free, argp_fmtstream_free): Move declarations up. (__argp_make_fmtstream): Declare that deallocation must happen through '__argp_fmtstream_free'. (argp_make_fmtstream): Declare that deallocation must happen through 'argp_fmtstream_free'. --- ChangeLog | 10 ++++++++++ lib/argp-fmtstream.h | 14 ++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8039f31483..84d3d008c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2021-08-07 Bruno Haible <bruno@clisp.org> + + argp: Improve GCC 11 allocation-deallocation checking. + * lib/argp-fmtstream.h (__argp_fmtstream_free, argp_fmtstream_free): + Move declarations up. + (__argp_make_fmtstream): Declare that deallocation must happen through + '__argp_fmtstream_free'. + (argp_make_fmtstream): Declare that deallocation must happen through + 'argp_fmtstream_free'. + 2021-08-07 Bruno Haible <bruno@clisp.org> areadlink, areadlinkat: Improve GCC 11 allocation-deallocation checking. diff --git a/lib/argp-fmtstream.h b/lib/argp-fmtstream.h index 79ba4844f8..3384a0012b 100644 --- a/lib/argp-fmtstream.h +++ b/lib/argp-fmtstream.h @@ -95,6 +95,10 @@ struct argp_fmtstream typedef struct argp_fmtstream *argp_fmtstream_t; +/* Flush __FS to its stream, and free it (but don't close the stream). */ +extern void __argp_fmtstream_free (argp_fmtstream_t __fs); +extern void argp_fmtstream_free (argp_fmtstream_t __fs); + /* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines written on it with LMARGIN spaces and limits them to RMARGIN columns total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by @@ -104,15 +108,13 @@ typedef struct argp_fmtstream *argp_fmtstream_t; extern argp_fmtstream_t __argp_make_fmtstream (FILE *__stream, size_t __lmargin, size_t __rmargin, - ssize_t __wmargin); + ssize_t __wmargin) + _GL_ATTRIBUTE_DEALLOC (__argp_fmtstream_free, 1); extern argp_fmtstream_t argp_make_fmtstream (FILE *__stream, size_t __lmargin, size_t __rmargin, - ssize_t __wmargin); - -/* Flush __FS to its stream, and free it (but don't close the stream). */ -extern void __argp_fmtstream_free (argp_fmtstream_t __fs); -extern void argp_fmtstream_free (argp_fmtstream_t __fs); + ssize_t __wmargin) + _GL_ATTRIBUTE_DEALLOC (argp_fmtstream_free, 1); extern ssize_t __argp_fmtstream_printf (argp_fmtstream_t __fs, const char *__fmt, ...) -- 2.39.5