diff options
author | Bruno Haible <bruno@clisp.org> | 2021-08-07 21:49:55 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2021-08-07 21:49:55 +0200 |
commit | 16aea871d6bef0ca811908b7199de849448e4a9f (patch) | |
tree | e75747ac4d6ce703adeb7898ed90b92db5f8d07a /lib | |
parent | 5ce620f7287c9aeb8b4b0b75c2631c0b16c1c2d5 (diff) | |
download | gnulib-16aea871d6bef0ca811908b7199de849448e4a9f.tar.gz |
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'.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pipe-filter.h | 37 |
1 files changed, 19 insertions, 18 deletions
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 ============================ */ |