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

Reply via email to