Author: anevilyak Date: 2010-12-10 00:45:13 +0100 (Fri, 10 Dec 2010) New Revision: 39795 Changeset: http://dev.haiku-os.org/changeset/39795 Modified: haiku/trunk/src/apps/debugger/value/ValueLoader.cpp haiku/trunk/src/apps/debugger/value/ValueLoader.h haiku/trunk/src/apps/debugger/value/value_nodes/CStringValueNode.cpp Log: Extend ValueLoader::LoadStringValue() to accept a max length parameter. When a CStringValue is representing an array, use the array's length to limit how many bytes we read. Modified: haiku/trunk/src/apps/debugger/value/ValueLoader.cpp =================================================================== --- haiku/trunk/src/apps/debugger/value/ValueLoader.cpp 2010-12-09 23:44:36 UTC (rev 39794) +++ haiku/trunk/src/apps/debugger/value/ValueLoader.cpp 2010-12-09 23:45:13 UTC (rev 39795) @@ -188,10 +188,10 @@ 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); } Modified: haiku/trunk/src/apps/debugger/value/ValueLoader.h =================================================================== --- haiku/trunk/src/apps/debugger/value/ValueLoader.h 2010-12-09 23:44:36 UTC (rev 39794) +++ haiku/trunk/src/apps/debugger/value/ValueLoader.h 2010-12-09 23:45:13 UTC (rev 39795) @@ -32,7 +32,7 @@ BVariant& _value); status_t LoadStringValue(BVariant& location, - BString& _value); + size_t maxSize, BString& _value); private: Architecture* fArchitecture; Modified: haiku/trunk/src/apps/debugger/value/value_nodes/CStringValueNode.cpp =================================================================== --- haiku/trunk/src/apps/debugger/value/value_nodes/CStringValueNode.cpp 2010-12-09 23:44:36 UTC (rev 39794) +++ haiku/trunk/src/apps/debugger/value/value_nodes/CStringValueNode.cpp 2010-12-09 23:45:13 UTC (rev 39795) @@ -69,16 +69,20 @@ BVariant addressData; BString valueData; status_t error = B_OK; + size_t maxSize = 255; if (dynamic_cast<AddressType*>(fType) != NULL) { error = valueLoader->LoadValue(location, valueType, false, addressData); - } else + } else { addressData.SetTo(location->PieceAt(0).address); + maxSize = dynamic_cast<ArrayType*>(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;