diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2023-04-14 00:00:56 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-14 00:00:56 +0800 |
| commit | 59a603593f06ca2935a376b17a91ec42657f1ef8 (patch) | |
| tree | 16147c6952e526c536597c816bf7ccc4f40f94cd /source/slang/slang-artifact-output-util.cpp | |
| parent | c7e5601bb67d2a5ebadb7f84c6968b5912e7566d (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/slang-artifact-output-util.cpp')
| -rw-r--r-- | source/slang/slang-artifact-output-util.cpp | 13 |
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) |
