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
_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev