summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2019-11-05 10:53:01 -0800
committerAdrian Prantl <aprantl@apple.com>2019-11-05 10:53:57 -0800
commit3606b567849a935ef6bf627dec2e6100a8f25c4b (patch)
tree3de346dc2977cfed4eda05065922958500487411 /lldb/source/Core
parent63f49465c3268e59ce2dc02345da187393adabd7 (diff)
downloadbcm5719-llvm-3606b567849a935ef6bf627dec2e6100a8f25c4b.tar.gz
bcm5719-llvm-3606b567849a935ef6bf627dec2e6100a8f25c4b.zip
ValueObject: Upstream early-exit from swift-lldb. (NFC)
Diffstat (limited to 'lldb/source/Core')
-rw-r--r--lldb/source/Core/Value.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/lldb/source/Core/Value.cpp b/lldb/source/Core/Value.cpp
index aa713d58dac..c70ab98dcdf 100644
--- a/lldb/source/Core/Value.cpp
+++ b/lldb/source/Core/Value.cpp
@@ -322,6 +322,12 @@ Status Value::GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data,
AddressType address_type = eAddressTypeFile;
Address file_so_addr;
const CompilerType &ast_type = GetCompilerType();
+ llvm::Optional<uint64_t> type_size = ast_type.GetByteSize(
+ exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr);
+ // Nothing to be done for a zero-sized type.
+ if (type_size && *type_size == 0)
+ return error;
+
switch (m_value_type) {
case eValueTypeVector:
if (ast_type.IsValid())
@@ -340,9 +346,8 @@ Status Value::GetValueAsData(ExecutionContext *exe_ctx, DataExtractor &data,
uint32_t limit_byte_size = UINT32_MAX;
- if (llvm::Optional<uint64_t> size = ast_type.GetByteSize(
- exe_ctx ? exe_ctx->GetBestExecutionContextScope() : nullptr))
- limit_byte_size = *size;
+ if (type_size)
+ limit_byte_size = *type_size;
if (limit_byte_size <= m_value.GetByteSize()) {
if (m_value.GetData(data, limit_byte_size))
OpenPOWER on IntegriCloud