[PATCH] D87987: [llvm-objcopy][NFC] refactor error handling. part 3.
James Henderson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 1 01:19:26 PDT 2020
jhenderson added inline comments.
================
Comment at: llvm/tools/llvm-objcopy/ELF/Object.cpp:578-585
+ if (Error Err = zlib::compress(
StringRef(reinterpret_cast<const char *>(OriginalData.data()),
OriginalData.size()),
CompressedData))
- reportError(Name, std::move(E));
+ OutErr = createStringError(llvm::errc::invalid_argument,
+ "'" + Name + "': " + toString(std::move(Err)));
----------------
rupprecht wrote:
> Once we detect an error, we probably don't want to go on and process the rest of this function, e.g. use of `CompressedData` may not be valid.
>
> You can't return early from the constructor IIUC, but maybe something like:
>
> ```
> if (Error Err = zlib::compress(...)) {
> OutErr = ...
> } { else {
> // Rest of constructor
> }
> ```
+1 to bailing out early here. You can use a `return;` (no value) in a constructor. See https://stackoverflow.com/questions/5255777/what-if-i-write-return-statement-in-constructor.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D87987/new/
https://reviews.llvm.org/D87987
More information about the llvm-commits
mailing list