diff --git a/renderdoc/core/remote_server.cpp b/renderdoc/core/remote_server.cpp index b667def20..db8e446b4 100644 --- a/renderdoc/core/remote_server.cpp +++ b/renderdoc/core/remote_server.cpp @@ -1497,11 +1497,20 @@ void RemoteServer::CopyCaptureFromRemote(const char *remotepath, const char *loc rdcstr RemoteServer::CopyCaptureToRemote(const char *filename, RENDERDOC_ProgressCallback progress) { + FILE *fileHandle = FileIO::fopen(filename, "rb"); + + if(!fileHandle) + { + RDCERR("Can't open file '%s'", filename); + return ""; + } + { WRITE_DATA_SCOPE(); SCOPED_SERIALISE_CHUNK(eRemoteServer_CopyCaptureToRemote); - StreamReader fileStream(FileIO::fopen(filename, "rb")); + // this will take ownership of and close the file + StreamReader fileStream(fileHandle); ser.SerialiseStream(filename, fileStream, progress); } diff --git a/renderdoc/serialise/streamio.cpp b/renderdoc/serialise/streamio.cpp index 9789cebd4..9782aa864 100644 --- a/renderdoc/serialise/streamio.cpp +++ b/renderdoc/serialise/streamio.cpp @@ -504,6 +504,13 @@ void StreamTransfer(StreamWriter *writer, StreamReader *reader, RENDERDOC_Progre { uint64_t totalSize = reader->GetSize(); + if(totalSize == 0) + { + if(progress) + progress(1.0f); + return; + } + // copy 1MB at a time const uint64_t StreamIOChunkSize = 1024 * 1024;