diff options
Diffstat (limited to 'source/slang/slang-repro.cpp')
| -rw-r--r-- | source/slang/slang-repro.cpp | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/source/slang/slang-repro.cpp b/source/slang/slang-repro.cpp index 4b3148278..67feebe43 100644 --- a/source/slang/slang-repro.cpp +++ b/source/slang/slang-repro.cpp @@ -1082,22 +1082,15 @@ struct LoadContext /* static */SlangResult ReproUtil::saveState(EndToEndCompileRequest* request, const String& filename) { - RefPtr<Stream> stream(new FileStream(filename, FileMode::Create, FileAccess::Write, FileShare::ReadWrite)); + RefPtr<FileStream> stream(new FileStream); + SLANG_RETURN_ON_FAIL(stream->init(filename, FileMode::Create, FileAccess::Write, FileShare::ReadWrite)); return saveState(request, stream); } /* static */ SlangResult ReproUtil::loadState(const String& filename, List<uint8_t>& outBuffer) { - RefPtr<Stream> stream; - try - { - stream = new FileStream(filename, FileMode::Open, FileAccess::Read, FileShare::ReadWrite); - } - catch (const IOException&) - { - return SLANG_FAIL; - } - + RefPtr<FileStream> stream = new FileStream; + SLANG_RETURN_ON_FAIL(stream->init(filename, FileMode::Open, FileAccess::Read, FileShare::ReadWrite)); return loadState(stream, outBuffer); } @@ -1564,6 +1557,8 @@ static SlangResult _findFirstSourcePath(EndToEndCompileRequest* request, String& String sourceFileName = Path::getFileName(sourcePath); String sourceBaseName = Path::getFileNameWithoutExt(sourceFileName); + RefPtr<FileStream> stream = new FileStream; + // Okay we need a unique number to make sure the name is unique const int maxTries = 100; for (int triesCount = 0; triesCount < maxTries; ++triesCount) @@ -1578,15 +1573,12 @@ static SlangResult _findFirstSourcePath(EndToEndCompileRequest* request, String& outFileName = builder; // We could have clashes, as we use ticks, we should get to a point where the clashes stop - try + if (SLANG_SUCCEEDED(stream->init(builder, FileMode::CreateNew, FileAccess::Write, FileShare::WriteOnly))) { - outStream = new FileStream(builder, FileMode::CreateNew, FileAccess::Write, FileShare::WriteOnly); + outStream = stream; return SLANG_OK; } - catch (const IOException&) - { - } - + // TODO(JS): // Might make sense to sleep here - but don't seem to have cross platform func for that yet. } |
