gdb 8.0 "lazy_string" exception "Length is larger than array size"

Michael Stahl <[email protected]>
Newsgroups gmane.comp.gdb.devel,gmane.comp.gdb.general
Message-ID <[email protected]>
hi,

for the following string type:

  /** The implementation of a Unicode string.
  */
  typedef struct SAL_DLLPUBLIC_RTTI _rtl_uString
  {
      oslInterlockedCount refCount; /* opaque */
      sal_Int32           length;
      sal_Unicode         buffer[1];
  } rtl_uString;

the gdb python pretty-printer calls:

	return data.lazy_string(encoding, length)

full python pretty-printer module:

https://gerrit.libreoffice.org/gitweb?p=core.git;a=blob;f=solenv/gdb/libreoffice/util/string.py;h=32583718f83b2ad5707f75dd6327d9aa62764439;hb=5f210715fe090b4db4c80dcdee5f77dc404cf85c#l56

now this results in this exception:

  Traceback (most recent call last):
    File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line
29, in to_string
      return self.make_string(data, self.encoding, len)
    File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line
66, in make_string
      return data.lazy_string(encoding, length)
  gdb.error: Length is larger than array size.

this is with Fedora 26 "GNU gdb (GDB) Fedora 8.0.1-26.fc26" - in Fedora
25 this did not throw an exception.

apparently the problem is that the array is statically declared as
"buffer[1]", however its actual dynamic size is the same as "length".

is this a bug in gdb or is lazy_string not intended to support this
scenario?

regards,
 michael
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.