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).