[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