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.
This commit is contained in:
Sterling Augustine
2013-11-22 13:55:32 -08:00
parent c0621699ff
commit f380848e84
2 changed files with 18 additions and 7 deletions

View File

@@ -1,3 +1,10 @@
2013-11-22 Sterling Augustine <saugustine@google.com>
PR backtrace/16196:
* valprint.c (read_string): Set new variable fetchlen based on
fetchlimit and size. Use it in call to partial_memory_read.
Update comment.
2013-11-22 Tom Tromey <tromey@redhat.com>
PR backtrace/16155:

View File

@@ -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;