summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-repro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-repro.cpp')
-rw-r--r--source/slang/slang-repro.cpp26
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.
}