summaryrefslogtreecommitdiffstats
path: root/source/slang
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-04-14 00:00:56 +0800
committerGitHub <noreply@github.com>2023-04-14 00:00:56 +0800
commit59a603593f06ca2935a376b17a91ec42657f1ef8 (patch)
tree16147c6952e526c536597c816bf7ccc4f40f94cd /source/slang
parentc7e5601bb67d2a5ebadb7f84c6968b5912e7566d (diff)
Set the executable bit on Executable artifact files (#2796)
* Set the executable bit on Executable artifact files * Don't zero out other permission bits in makeExecutable
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/slang-artifact-output-util.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/source/slang/slang-artifact-output-util.cpp b/source/slang/slang-artifact-output-util.cpp
index bcf145420..80c11a466 100644
--- a/source/slang/slang-artifact-output-util.cpp
+++ b/source/slang/slang-artifact-output-util.cpp
@@ -174,14 +174,15 @@ static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPt
/* static */SlangResult ArtifactOutputUtil::writeToFile(const ArtifactDesc& desc, const void* data, size_t size, const String& path)
{
- if (ArtifactDescUtil::isText(desc))
+ const SlangResult res = ArtifactDescUtil::isText(desc)
+ ? File::writeAllTextIfChanged(path, UnownedStringSlice((const char*)data, size))
+ : File::writeAllBytes(path, data, size);
+ if(desc.kind == ArtifactKind::Executable)
{
- return File::writeAllTextIfChanged(path, UnownedStringSlice((const char*)data, size));
- }
- else
- {
- return File::writeAllBytes(path, data, size);
+ // Ignore any success code here, assume the one from the actual write is more important.
+ SLANG_RETURN_ON_FAIL(File::makeExecutable(path));
}
+ return res;
}
/* static */SlangResult ArtifactOutputUtil::writeToFile(const ArtifactDesc& desc, ISlangBlob* blob, const String& path)