downloadbuffer: close file before trying to remove
authorDoug Nazar <nazard@nazar.ca>
Fri, 7 May 2021 03:00:57 +0000 (23:00 -0400)
committerDoug Nazar <nazard@nazar.ca>
Fri, 7 May 2021 03:04:27 +0000 (23:04 -0400)
On Windows, the file handles must be closed before you can delete a file.
Also, it would cause an error if you try to close an already closed handle.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/814>

plugins/elements/gstdownloadbuffer.c

index b9d512b..6d01bf9 100644 (file)
@@ -963,15 +963,17 @@ gst_download_buffer_close_temp_location_file (GstDownloadBuffer * dlbuf)
 
   GST_DEBUG_OBJECT (dlbuf, "closing sparse file");
 
+  gst_sparse_file_free (dlbuf->file);
+  dlbuf->file = NULL;
+  /* fd was closed by gst_sparse_file_free's fclose() */
+  dlbuf->temp_fd = -1;
+
   if (dlbuf->temp_remove) {
     if (remove (dlbuf->temp_location) < 0) {
       GST_WARNING_OBJECT (dlbuf, "Failed to remove temporary file %s: %s",
           dlbuf->temp_location, g_strerror (errno));
     }
   }
-  gst_sparse_file_free (dlbuf->file);
-  close (dlbuf->temp_fd);
-  dlbuf->file = NULL;
 }
 
 static void