diff options
Diffstat (limited to 'gdb/valops.c')
-rw-r--r-- | gdb/valops.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gdb/valops.c b/gdb/valops.c index f67612e..161b869 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1754,12 +1754,15 @@ value_cstring (const char *ptr, ssize_t len, struct type *char_type) { struct value *val; int lowbound = current_language->string_lower_bound (); - ssize_t highbound = len / TYPE_LENGTH (char_type); + ssize_t highbound = len + 1; struct type *stringtype = lookup_array_range_type (char_type, lowbound, highbound + lowbound - 1); val = allocate_value (stringtype); - memcpy (value_contents_raw (val), ptr, len); + memcpy (value_contents_raw (val), ptr, len * TYPE_LENGTH (char_type)); + /* Write the terminating character. */ + memset (value_contents_raw (val) + len * TYPE_LENGTH (char_type), + 0, TYPE_LENGTH (char_type)); return val; } |