about summary refs log tree commit diff
path: root/src/rustllvm/ArchiveWrapper.cpp
diff options
context:
space:
mode:
authorJan-Erik Rediger <janerik@fnordig.de>2016-07-24 22:34:37 +0200
committerJan-Erik Rediger <janerik@fnordig.de>2016-07-29 10:29:44 +0200
commita36595ed14b4ded33d207040e5bcd3da169ecc20 (patch)
treea267ac31f40108bd1cc5e57f42414abe511065f2 /src/rustllvm/ArchiveWrapper.cpp
parent2c16e24643976523e6858fd41a1ded0429a96ef1 (diff)
downloadrust-a36595ed14b4ded33d207040e5bcd3da169ecc20.tar.gz
rust-a36595ed14b4ded33d207040e5bcd3da169ecc20.zip
Force check of error
The passed error needs to be checked.
Otherwise it will force an abort when it is deconstructed, but a
success value.
Diffstat (limited to 'src/rustllvm/ArchiveWrapper.cpp')
-rw-r--r--src/rustllvm/ArchiveWrapper.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/rustllvm/ArchiveWrapper.cpp b/src/rustllvm/ArchiveWrapper.cpp
index 935052a5113..3d48024c879 100644
--- a/src/rustllvm/ArchiveWrapper.cpp
+++ b/src/rustllvm/ArchiveWrapper.cpp
@@ -73,6 +73,9 @@ LLVMRustDestroyArchive(RustArchive *ar) {
 struct RustArchiveIterator {
     Archive::child_iterator cur;
     Archive::child_iterator end;
+#if LLVM_VERSION_MINOR >= 9
+    Error err;
+#endif
 };
 
 extern "C" RustArchiveIterator*
@@ -82,8 +85,11 @@ LLVMRustArchiveIteratorNew(RustArchive *ra) {
 #if LLVM_VERSION_MINOR <= 8
     rai->cur = ar->child_begin();
 #else
-    Error err;
-    rai->cur = ar->child_begin(err);
+    rai->cur = ar->child_begin(rai->err);
+    if (rai->err) {
+        LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
+        return NULL;
+    }
 #endif
     rai->end = ar->child_end();
     return rai;
@@ -91,6 +97,12 @@ LLVMRustArchiveIteratorNew(RustArchive *ra) {
 
 extern "C" const Archive::Child*
 LLVMRustArchiveIteratorNext(RustArchiveIterator *rai) {
+#if LLVM_VERSION_MINOR >= 9
+    if (rai->err) {
+        LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
+        return NULL;
+    }
+#endif
     if (rai->cur == rai->end)
         return NULL;
 #if LLVM_VERSION_MINOR == 8