- fread (buffer, 1, size, f);
- fclose (f);
- _video_size = dcp::decompress_j2k (buffer, size, 0)->size ();
- delete[] buffer;
+ std::vector<uint8_t> buffer(size);
+ f.checked_read(buffer.data(), size);
+ f.close();
+ try {
+ _video_size = dcp::decompress_j2k(buffer.data(), size, 0)->size();
+ } catch (dcp::ReadError& e) {
+ throw DecodeError (String::compose (_("Could not decode JPEG2000 file %1 (%2)"), path, e.what ()));
+ }