Check _inter_size in ::has_j2k() (fixes #2086).
[dcpomatic.git] / src / lib / scoped_temporary.cc
index 3503808bc210c7a09a37caacf0ca839f246ee4cc..223100ba5f727df6180eab3b1ba191a38f1ff18b 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 #include "scoped_temporary.h"
+#include "exceptions.h"
+#include "cross.h"
+
 
 /** Construct a ScopedTemporary.  A temporary filename is decided but the file is not opened
- *  until ::open() is called.
+ *  until open() is called.
  */
 ScopedTemporary::ScopedTemporary ()
-       : _open (0)
 {
        _file = boost::filesystem::temp_directory_path() / boost::filesystem::unique_path ();
 }
 
+
 /** Close and delete the temporary file */
 ScopedTemporary::~ScopedTemporary ()
 {
@@ -37,29 +41,36 @@ ScopedTemporary::~ScopedTemporary ()
        boost::filesystem::remove (_file, ec);
 }
 
+
 /** @return temporary filename */
 char const *
 ScopedTemporary::c_str () const
 {
-       return _file.string().c_str ();
+       return _file.string().c_str();
 }
 
+
 /** Open the temporary file.
  *  @return File's FILE pointer.
  */
 FILE*
 ScopedTemporary::open (char const * params)
 {
-       _open = fopen (c_str(), params);
+       close ();
+       _open = fopen_boost (_file, params);
+       if (!_open) {
+               throw FileError ("Could not open scoped temporary", _file);
+       }
        return _open;
 }
 
+
 /** Close the file */
 void
 ScopedTemporary::close ()
 {
        if (_open) {
                fclose (_open);
-               _open = 0;
+               _open = nullptr;
        }
 }