diff options
| author | Jan-Erik Rediger <janerik@fnordig.de> | 2016-07-24 22:34:37 +0200 |
|---|---|---|
| committer | Jan-Erik Rediger <janerik@fnordig.de> | 2016-07-29 10:29:44 +0200 |
| commit | a36595ed14b4ded33d207040e5bcd3da169ecc20 (patch) | |
| tree | a267ac31f40108bd1cc5e57f42414abe511065f2 /src/rustllvm/ArchiveWrapper.cpp | |
| parent | 2c16e24643976523e6858fd41a1ded0429a96ef1 (diff) | |
| download | rust-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.cpp | 16 |
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 |
