52 lines
2.2 KiB
Diff
52 lines
2.2 KiB
Diff
From: Sterling Augustine <saugustine@google.com>
|
|
Date: Fri, 22 Nov 2013 21:55:32 +0000 (-0800)
|
|
Subject: 2013-11-22 Sterling Augustine <saugustine@google.com>
|
|
X-Git-Url: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff_plain;h=f380848e84613364a17008f04e91bfef09eaf158;hp=c0621699ffdbeea387ea37a90258939540b26424
|
|
|
|
2013-11-22 Sterling Augustine <saugustine@google.com>
|
|
|
|
PR gdb/16196:
|
|
* valprint.c (read_string): Set new variable fetchlen based on
|
|
fetchlimit and size. Use it in call to partial_memory_read.
|
|
Update comment.
|
|
---
|
|
|
|
diff --git a/gdb/valprint.c b/gdb/valprint.c
|
|
index ea877f3..ecc3411 100644
|
|
--- a/gdb/valprint.c
|
|
+++ b/gdb/valprint.c
|
|
@@ -1757,11 +1757,13 @@ partial_memory_read (CORE_ADDR memaddr, gdb_byte *myaddr,
|
|
free, and BYTES_READ will be set to the number of bytes read. Returns 0 on
|
|
success, or a target_xfer_error on failure.
|
|
|
|
- If LEN > 0, reads exactly LEN characters (including eventual NULs in
|
|
- the middle or end of the string). If LEN is -1, stops at the first
|
|
- null character (not necessarily the first null byte) up to a maximum
|
|
- of FETCHLIMIT characters. Set FETCHLIMIT to UINT_MAX to read as many
|
|
- characters as possible from the string.
|
|
+ If LEN > 0, reads the lesser of LEN or FETCHLIMIT characters
|
|
+ (including eventual NULs in the middle or end of the string).
|
|
+
|
|
+ If LEN is -1, stops at the first null character (not necessarily
|
|
+ the first null byte) up to a maximum of FETCHLIMIT characters. Set
|
|
+ FETCHLIMIT to UINT_MAX to read as many characters as possible from
|
|
+ the string.
|
|
|
|
Unless an exception is thrown, BUFFER will always be allocated, even on
|
|
failure. In this case, some characters might have been read before the
|
|
@@ -1807,10 +1809,12 @@ read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
|
|
|
|
if (len > 0)
|
|
{
|
|
- *buffer = (gdb_byte *) xmalloc (len * width);
|
|
+ unsigned int fetchlen = min (len, fetchlimit);
|
|
+
|
|
+ *buffer = (gdb_byte *) xmalloc (fetchlen * width);
|
|
bufptr = *buffer;
|
|
|
|
- nfetch = partial_memory_read (addr, bufptr, len * width, &errcode)
|
|
+ nfetch = partial_memory_read (addr, bufptr, fetchlen * width, &errcode)
|
|
/ width;
|
|
addr += nfetch * width;
|
|
bufptr += nfetch * width;
|