Browse Source

Fix resource leaks on read errors

v1.x
mscdex 11 years ago
parent
commit
fd56f06e87
  1. 6
      src/Image.cc

6
src/Image.cc

@ -375,7 +375,10 @@ Image::loadSurface() {
FILE *stream = fopen(filename, "r"); FILE *stream = fopen(filename, "r");
if (!stream) return CAIRO_STATUS_READ_ERROR; if (!stream) return CAIRO_STATUS_READ_ERROR;
uint8_t buf[5]; 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); fseek(stream, 0, SEEK_SET);
// png // png
@ -394,6 +397,7 @@ Image::loadSurface() {
if (isJPEG(buf)) return loadJPEG(stream); if (isJPEG(buf)) return loadJPEG(stream);
#endif #endif
fclose(stream);
return CAIRO_STATUS_READ_ERROR; return CAIRO_STATUS_READ_ERROR;
} }

Loading…
Cancel
Save