diff --git a/lldb/source/DataFormatters/VectorType.cpp b/lldb/source/DataFormatters/VectorType.cpp index 8a842b8675f57..28a5cad9cc044 100644 --- a/lldb/source/DataFormatters/VectorType.cpp +++ b/lldb/source/DataFormatters/VectorType.cpp @@ -276,7 +276,13 @@ class VectorTypeSyntheticFrontEnd : public SyntheticChildrenFrontEnd { name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp index 4bcdf01c221a3..70cf0f6922831 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp @@ -279,7 +279,13 @@ lldb_private::formatters::LibcxxVectorBoolSyntheticFrontEnd:: name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/ObjC/NSArray.cpp b/lldb/source/Plugins/Language/ObjC/NSArray.cpp index 25376e064879d..e1a3a7636929a 100644 --- a/lldb/source/Plugins/Language/ObjC/NSArray.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSArray.cpp @@ -534,7 +534,13 @@ llvm::Expected lldb_private::formatters::NSArrayMSyntheticFrontEndBase:: name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp b/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp index ef1c2c89fe125..dfaea46f2af37 100644 --- a/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp @@ -593,7 +593,13 @@ llvm::Expected lldb_private::formatters:: name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -731,7 +737,13 @@ llvm::Expected lldb_private::formatters:: name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -868,7 +880,13 @@ lldb_private::formatters::NSConstantDictionarySyntheticFrontEnd:: name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -1073,7 +1091,13 @@ lldb_private::formatters::GenericNSDictionaryMSyntheticFrontEnd< name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -1235,7 +1259,13 @@ llvm::Expected lldb_private::formatters::Foundation1100:: name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/ObjC/NSIndexPath.cpp b/lldb/source/Plugins/Language/ObjC/NSIndexPath.cpp index b5360195e91d2..4e805c4f17e37 100644 --- a/lldb/source/Plugins/Language/ObjC/NSIndexPath.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSIndexPath.cpp @@ -133,7 +133,13 @@ class NSIndexPathSyntheticFrontEnd : public SyntheticChildrenFrontEnd { name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/ObjC/NSSet.cpp b/lldb/source/Plugins/Language/ObjC/NSSet.cpp index 7d814e656dc5f..19b87828b6258 100644 --- a/lldb/source/Plugins/Language/ObjC/NSSet.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSSet.cpp @@ -395,7 +395,13 @@ lldb_private::formatters::NSSetISyntheticFrontEnd::GetIndexOfChildWithName( name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -533,7 +539,13 @@ lldb_private::formatters::NSCFSetSyntheticFrontEnd::GetIndexOfChildWithName( name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -672,7 +684,13 @@ llvm::Expected lldb_private::formatters::GenericNSSetMSyntheticFrontEnd< name.AsCString()); } uint32_t idx = *optional_idx; - if (idx >= CalculateNumChildrenIgnoringErrors()) + auto num_children_or_err = CalculateNumChildren(); + if (!num_children_or_err) { + llvm::consumeError(num_children_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + if (idx >= *num_children_or_err) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx;