From fd56f06e87861171cd110a7fe08a737d43e69664 Mon Sep 17 00:00:00 2001 From: mscdex Date: Sat, 27 Jul 2013 00:57:16 -0400 Subject: [PATCH] Fix resource leaks on read errors --- src/Image.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Image.cc b/src/Image.cc index d96ca8b..5cc43f4 100644 --- a/src/Image.cc +++ b/src/Image.cc @@ -375,7 +375,10 @@ Image::loadSurface() { FILE *stream = fopen(filename, "r"); if (!stream) return CAIRO_STATUS_READ_ERROR; uint8_t buf[5]; - if (1 != fread(&buf, 5, 1, stream)) return CAIRO_STATUS_READ_ERROR; + if (1 != fread(&buf, 5, 1, stream)) { + fclose(stream); + return CAIRO_STATUS_READ_ERROR; + } fseek(stream, 0, SEEK_SET); // png @@ -394,6 +397,7 @@ Image::loadSurface() { if (isJPEG(buf)) return loadJPEG(stream); #endif + fclose(stream); return CAIRO_STATUS_READ_ERROR; }