[haiku-commits] r39795 - in haiku/trunk/src/apps/debugger/value: . value_nodes

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 10 Dec 2010 00:45:13 +0100 (CET)

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;
 


Other related posts: