summaryrefslogtreecommitdiff
path: root/riscos/filetype.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2006-07-06 06:42:54 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2006-07-06 06:42:54 +0000
commit8fefa1061e22e91e75669af66072ff4625a57013 (patch)
tree711b961dfba9a3f201c0ea32920e9675c07d75a5 /riscos/filetype.c
parentbadad073ec99b49288421e99a701f3a61f1fac55 (diff)
downloadnetsurf-8fefa1061e22e91e75669af66072ff4625a57013.tar.gz
netsurf-8fefa1061e22e91e75669af66072ff4625a57013.tar.bz2
Fix 1517874. Plug memory leaks on failure.
svn path=/trunk/netsurf/; revision=2720
Diffstat (limited to 'riscos/filetype.c')
-rw-r--r--riscos/filetype.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/riscos/filetype.c b/riscos/filetype.c
index 9a26dad8d..4c19c0d41 100644
--- a/riscos/filetype.c
+++ b/riscos/filetype.c
@@ -160,17 +160,23 @@ char *fetch_mimetype(const char *ro_path)
}
e = xosfile_read_no_path(ro_path, &objtype, &load, 0, 0, 0);
- if (e)
+ if (e) {
+ LOG(("xosfile_read_no_path: 0x%x: %s",
+ e->errnum, e->errmess));
+ free(mime);
return 0;
+ }
- if (objtype == osfile_IS_DIR)
- sprintf(mime, "application/x-netsurf-directory");
+ if (objtype == osfile_IS_DIR) {
+ free(mime);
return 0; /* directories are pointless */
+ }
if ((load >> 20) & 0xFFF) {
filetype = (load>>8) & 0x000FFF;
}
else {
+ free(mime);
return 0; /* no idea */
}
@@ -188,8 +194,12 @@ char *fetch_mimetype(const char *ro_path)
}
e = xmimemaptranslate_filetype_to_mime_type(filetype, mime);
- if (e)
+ if (e) {
+ LOG(("xmimemaptranslate_filetype_to_mime_type: 0x%x: %s",
+ e->errnum, e->errmess));
+ free(mime);
return 0;
+ }
/* make sure we're NULL terminated. If we're not, the MimeMap
* module's probably written past the end of the buffer from
* SVC mode. Short of rewriting MimeMap with an incompatible API,