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.
This commit is contained in:
Jan-Erik Rediger 2016-07-24 22:34:37 +02:00
parent 2c16e24643
commit a36595ed14

View file

@ -73,6 +73,9 @@ LLVMRustDestroyArchive(RustArchive *ar) {
struct RustArchiveIterator { struct RustArchiveIterator {
Archive::child_iterator cur; Archive::child_iterator cur;
Archive::child_iterator end; Archive::child_iterator end;
#if LLVM_VERSION_MINOR >= 9
Error err;
#endif
}; };
extern "C" RustArchiveIterator* extern "C" RustArchiveIterator*
@ -82,8 +85,11 @@ LLVMRustArchiveIteratorNew(RustArchive *ra) {
#if LLVM_VERSION_MINOR <= 8 #if LLVM_VERSION_MINOR <= 8
rai->cur = ar->child_begin(); rai->cur = ar->child_begin();
#else #else
Error err; rai->cur = ar->child_begin(rai->err);
rai->cur = ar->child_begin(err); if (rai->err) {
LLVMRustSetLastError(toString(std::move(rai->err)).c_str());
return NULL;
}
#endif #endif
rai->end = ar->child_end(); rai->end = ar->child_end();
return rai; return rai;
@ -91,6 +97,12 @@ LLVMRustArchiveIteratorNew(RustArchive *ra) {
extern "C" const Archive::Child* extern "C" const Archive::Child*
LLVMRustArchiveIteratorNext(RustArchiveIterator *rai) { 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) if (rai->cur == rai->end)
return NULL; return NULL;
#if LLVM_VERSION_MINOR == 8 #if LLVM_VERSION_MINOR == 8