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:
parent
2c16e24643
commit
a36595ed14
1 changed files with 14 additions and 2 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue