public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug python/16020] New: Print trailing nul in c++ std::string?
@ 2013-10-08 22:04 dje at google dot com
2013-10-08 22:21 ` [Bug python/16020] " b.r.longbons at gmail dot com
0 siblings, 1 reply; 2+ messages in thread
From: dje at google dot com @ 2013-10-08 22:04 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16020
Bug ID: 16020
Summary: Print trailing nul in c++ std::string?
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: python
Assignee: unassigned at sourceware dot org
Reporter: dje at google dot com
Feel free to move this to libstdc++ if warranted, but most of the
pretty-printing of std strings is in gdb so I figured I'd start here.
[Whether printing of lazy strings correctly falls under category python or c++
or whatever ... feel free to correct that too.]
Consider:
#include <string>
#include <iostream>
using namespace std;
int
main (void)
{
static const char foo[] = "abc";
string foo0_str (foo, sizeof (foo));
string foo_str (foo, sizeof (foo) - 1);
cout << "foo0_str: \"" << foo0_str << "\"\n";
cout << "foo_str: \"" << foo_str << "\"\n";
return 0;
}
Here is the output:
$ ./trailing-nul.x64
foo0_str: "abc^@"
foo_str: "abc"
However, the trailing nul in foo0_str is not included in pretty-printed output:
(gdb) p foo0_str
$1 = "abc"
(gdb) p foo_str
$2 = "abc"
Bug?
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Bug python/16020] Print trailing nul in c++ std::string?
2013-10-08 22:04 [Bug python/16020] New: Print trailing nul in c++ std::string? dje at google dot com
@ 2013-10-08 22:21 ` b.r.longbons at gmail dot com
0 siblings, 0 replies; 2+ messages in thread
From: b.r.longbons at gmail dot com @ 2013-10-08 22:21 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=16020
Ben Longbons <b.r.longbons at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |b.r.longbons at gmail dot com
--- Comment #1 from Ben Longbons <b.r.longbons at gmail dot com> ---
You can get the right behavior by adding 1 to the length in the libstdc++
printer.
But the actual bug is that gdb is unconditionally removing a single trailing \0
from all strings. It makes sense for the builtin char[] printing, but not for
things passed from python.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-10-08 22:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-08 22:04 [Bug python/16020] New: Print trailing nul in c++ std::string? dje at google dot com
2013-10-08 22:21 ` [Bug python/16020] " b.r.longbons at gmail dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).