On Tue, 27 Feb 2007 13:36:21 +0300
Alexey Tourbin <[EMAIL PROTECTED]> wrote:
> gcc warning as follows:
> textarea.c: In function 'save_textarea_file':
> textarea.c:305: warning: ignoring return value of 'fwrite', declared with
> attribute warn_unused_result
>
> Check fwrite() and fclose() return values.
> Also unlink temporary file on error conditions.
>
> This routine is now very similar to user.c:save_form_data_to_file().
> Maybe they should be factored.
> ---
> src/viewer/text/textarea.c | 33 +++++++++++++++++++++++++--------
> 1 files changed, 25 insertions(+), 8 deletions(-)
>
> diff --git a/src/viewer/text/textarea.c b/src/viewer/text/textarea.c
> index bbc58dc..7e2ac2d 100644
> --- a/src/viewer/text/textarea.c
> +++ b/src/viewer/text/textarea.c
> @@ -292,22 +292,39 @@ static unsigned char *
> save_textarea_file(unsigned char *value)
> {
> unsigned char *filename;
> - FILE *file = NULL;
> - int h;
> + FILE *fp;
> + int fd;
> + size_t len, nmemb;
>
> filename = get_tempdir_filename("elinks-area-XXXXXX");
> if (!filename) return NULL;
>
> - h = safe_mkstemp(filename);
> - if (h >= 0) file = fdopen(h, "w");
> + fd = safe_mkstemp(filename);
> + if (fd < 0) {
> + mem_free(filename);
> + return NULL;
> + }
>
> - if (file) {
> - fwrite(value, strlen(value), 1, file);
> - fclose(file);
> - } else {
> + len = strlen(value);
> + if (len == 0) return filename;
> +
> + fp = fdopen(fd, "w");
> + if (!fp) {
> +error: unlink(filename);
> mem_free(filename);
> + close(fd);
> + return NULL;
> + }
> +
> + nmemb = fwrite(value, len, 1, fp);
> + if (nmemb != 1) {
> + fclose(fp);
> + goto error;
> }
>
> + if (fclose(fp) != 0)
> + goto error;
> +
> return filename;
> }
>
> --
> 1.5.0.1.GIT
>
Thanks, committed to master branch.
Kind regards,
--
Zas
_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev