diff --git a/src/apps/debugger/value/ValueLoader.cpp b/src/apps/debugger/value/ValueLoader.cpp index 2bf1cae254..21c78462b1 100644 --- a/src/apps/debugger/value/ValueLoader.cpp +++ b/src/apps/debugger/value/ValueLoader.cpp @@ -188,10 +188,10 @@ ValueLoader::LoadValue(ValueLocation* location, type_code valueType, status_t -ValueLoader::LoadStringValue(BVariant& location, BString& _value) +ValueLoader::LoadStringValue(BVariant& location, size_t maxSize, BString& _value) { static const size_t kMaxStringSize = 255; - return fTeamMemory->ReadMemoryString(location.ToUInt64(), kMaxStringSize, - _value); + return fTeamMemory->ReadMemoryString(location.ToUInt64(), + maxSize > kMaxStringSize ? kMaxStringSize : maxSize, _value); } diff --git a/src/apps/debugger/value/ValueLoader.h b/src/apps/debugger/value/ValueLoader.h index f18a764539..6f39e56672 100644 --- a/src/apps/debugger/value/ValueLoader.h +++ b/src/apps/debugger/value/ValueLoader.h @@ -32,7 +32,7 @@ public: BVariant& _value); status_t LoadStringValue(BVariant& location, - BString& _value); + size_t maxSize, BString& _value); private: Architecture* fArchitecture; diff --git a/src/apps/debugger/value/value_nodes/CStringValueNode.cpp b/src/apps/debugger/value/value_nodes/CStringValueNode.cpp index 5c779bafc7..dc967113b4 100644 --- a/src/apps/debugger/value/value_nodes/CStringValueNode.cpp +++ b/src/apps/debugger/value/value_nodes/CStringValueNode.cpp @@ -69,16 +69,20 @@ CStringValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader, BVariant addressData; BString valueData; status_t error = B_OK; + size_t maxSize = 255; if (dynamic_cast(fType) != NULL) { error = valueLoader->LoadValue(location, valueType, false, addressData); - } else + } else { addressData.SetTo(location->PieceAt(0).address); + maxSize = dynamic_cast(fType) + ->DimensionAt(0)->CountElements(); + } if (error != B_OK) return error; - error = valueLoader->LoadStringValue(addressData, valueData); + error = valueLoader->LoadStringValue(addressData, maxSize, valueData); if (error != B_OK) return error;