summaryrefslogtreecommitdiffstats
path: root/source/slangc/main.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-06-17 12:15:29 -0400
committerGitHub <noreply@github.com>2020-06-17 12:15:29 -0400
commitca503d48bff31d3990d4740751d5f6a4a48bfe5a (patch)
tree929f45089a4376191d94c315470025dad7802e30 /source/slangc/main.cpp
parent40370acda00ed35f43ff047201eec3d386564080 (diff)
Hotfix/slangc unreleased compile request (#1393)
* Releases compile request if there is an error. * Arrange so that caller can clean up CompileRequest so don't have to capture all paths.
Diffstat (limited to 'source/slangc/main.cpp')
-rw-r--r--source/slangc/main.cpp36
1 files changed, 19 insertions, 17 deletions
diff --git a/source/slangc/main.cpp b/source/slangc/main.cpp
index 3074f3540..931737a41 100644
--- a/source/slangc/main.cpp
+++ b/source/slangc/main.cpp
@@ -11,7 +11,13 @@ using namespace Slang;
#include <assert.h>
-static void diagnosticCallback(
+#ifdef _WIN32
+#define MAIN slangc_main
+#else
+#define MAIN main
+#endif
+
+static void _diagnosticCallback(
char const* message,
void* /*userData*/)
{
@@ -20,23 +26,9 @@ static void diagnosticCallback(
stdError.flush();
}
-#ifdef _WIN32
-#define MAIN slangc_main
-#else
-#define MAIN main
-#endif
-
-SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv)
+static SlangResult _compile(SlangCompileRequest* compileRequest, int argc, const char*const* argv)
{
- StdWriters::setSingleton(stdWriters);
-
- SlangCompileRequest* compileRequest = spCreateCompileRequest(session);
-
- spSetDiagnosticCallback(
- compileRequest,
- &diagnosticCallback,
- nullptr);
-
+ spSetDiagnosticCallback(compileRequest, &_diagnosticCallback, nullptr);
spSetCommandLineCompilerMode(compileRequest);
char const* appName = "slangc";
@@ -71,8 +63,18 @@ SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, SlangSession*
}
#endif
+ return res;
+}
+
+SLANG_TEST_TOOL_API SlangResult innerMain(StdWriters* stdWriters, SlangSession* session, int argc, const char*const* argv)
+{
+ StdWriters::setSingleton(stdWriters);
+
+ SlangCompileRequest* compileRequest = spCreateCompileRequest(session);
+ SlangResult res = _compile(compileRequest, argc, argv);
// Now that we are done, clean up after ourselves
spDestroyCompileRequest(compileRequest);
+
return res;
}