From: Bruno Haible Date: Sat, 7 Aug 2021 19:49:55 +0000 (+0200) Subject: pipe-filter-gi: Improve GCC 11 allocation-deallocation checking. X-Git-Tag: v1.0~2696 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=16aea871d6bef0ca811908b7199de849448e4a9f;p=gnulib.git pipe-filter-gi: Improve GCC 11 allocation-deallocation checking. * lib/pipe-filter.h (pipe_filter_gi_close): Move declaration up. (pipe_filter_gi_create): Declare that deallocation must happen through 'pipe_filter_gi_close'. --- diff --git a/ChangeLog b/ChangeLog index 912c8cc3e1..8d4f2fda64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2021-08-07 Bruno Haible + + pipe-filter-gi: Improve GCC 11 allocation-deallocation checking. + * lib/pipe-filter.h (pipe_filter_gi_close): Move declaration up. + (pipe_filter_gi_create): Declare that deallocation must happen through + 'pipe_filter_gi_close'. + 2021-08-07 Bruno Haible javaversion: Improve GCC 11 allocation-deallocation checking. diff --git a/lib/pipe-filter.h b/lib/pipe-filter.h index 614b9e0cba..c308cf33ec 100644 --- a/lib/pipe-filter.h +++ b/lib/pipe-filter.h @@ -152,6 +152,23 @@ struct pipe_filter_ig; struct pipe_filter_gi; +/* Finish reading the output via the prepare_read/done_read functions + specified to pipe_filter_gi_create. + + Note that the prepare_read/done_read functions may be called in a + different thread than the current thread (depending on the platform). + However, they will always be called before pipe_filter_gi_close has + returned. + + The write side of the pipe is closed as soon as pipe_filter_gi_close + starts, while the read side will be closed just before it finishes. + + Return 0 upon success, or (only if exit_on_error is false): + - -1 with errno set upon failure, + - the positive exit code of the subprocess if that failed. */ +extern int + pipe_filter_gi_close (struct pipe_filter_gi *filter); + /* Create a subprocess and pipe some data through it. Arguments: - progname is the program name used in error messages. @@ -185,7 +202,8 @@ extern struct pipe_filter_gi * bool null_stderr, bool exit_on_error, prepare_read_fn prepare_read, done_read_fn done_read, - void *private_data); + void *private_data) + _GL_ATTRIBUTE_DEALLOC (pipe_filter_gi_close, 1); /* Write size bytes starting at buf into the pipe and in the meanwhile possibly call the prepare_read and done_read functions specified to @@ -207,23 +225,6 @@ extern int pipe_filter_gi_write (struct pipe_filter_gi *filter, const void *buf, size_t size); -/* Finish reading the output via the prepare_read/done_read functions - specified to pipe_filter_gi_create. - - Note that the prepare_read/done_read functions may be called in a - different thread than the current thread (depending on the platform). - However, they will always be called before pipe_filter_gi_close has - returned. - - The write side of the pipe is closed as soon as pipe_filter_gi_close - starts, while the read side will be closed just before it finishes. - - Return 0 upon success, or (only if exit_on_error is false): - - -1 with errno set upon failure, - - the positive exit code of the subprocess if that failed. */ -extern int - pipe_filter_gi_close (struct pipe_filter_gi *filter); - /* ============================ pipe_filter_gg ============================ */