https://bugs.freedesktop.org/show_bug.cgi?id=70726

          Priority: medium
            Bug ID: 70726
                CC: [email protected]
          Assignee: [email protected]
           Summary: abort when printing a particular sheet
          Severity: normal
    Classification: Unclassified
                OS: All
          Reporter: [email protected]
          Hardware: All
            Status: UNCONFIRMED
           Version: 4.2.0.0.alpha0+ Master
         Component: Spreadsheet
           Product: LibreOffice

When printing a particular sheet, a dbgutil build of LibreOffice aborts because
rtl::OUString::copy has been called with argument count bigger than length of
the string.

I can send the document privately to any bona fide dev wanting to work on this
bug.

However, my guess is that this comes from the String -> OUString conversion in

commit db3f16317e0b0f931fdfcb6f19f8cc474bd70683
Author: Noel Grandin <[email protected]>
Date:   Wed Aug 7 14:03:59 2013 +0200

    convert String to OUString in VCL

    Change-Id: Ie5c6874298641dc6fc1b6b4e2206a704acd7cc10



(gdb) frame 6
#6  0x00007f42266ba660 in vcl::PDFWriterImpl::playMetafile (this=0x43d67d0,
i_rMtf=..., i_pOutDevData=0x0, i_rContext=..., 
    pDummyVDev=0x43908d0) at
/home/master/src/libreoffice/workdirs/libreoffice-4.2/vcl/source/gdi/pdfwriter_impl2.cxx:845
845                        m_rOuterFace.DrawText( pA->GetPoint(),
pA->GetText().copy( pA->GetIndex(), pA->GetLen() ) );

(gdb) print *pA
$9 = (MetaTextAction) {
  <MetaAction> = {
    _vptr.MetaAction = 0x7f4227040a10, 
    mnRefCount = 2, 
    mnType = 112
  }, 
  members of MetaTextAction: 
  maPt = Point = {
    x = 6897,
    y = 2046
  }, 
  maStr = "Prises", 
  mnIndex = 0, 
  mnLen = 65535
}
gdb) down
#5  0x00007f4226389f21 in rtl::OUString::copy (this=0x43805a8,
beginIndex=beginIndex@entry=0, count=count@entry=65535)
    at
/home/master/src/libreoffice/workdirs/libreoffice-4.2/include/rtl/ustring.hxx:1482
1482            rtl_uString_newFromSubString( &pNew, pData, beginIndex, count
);
(gdb) down
#4  0x00007f422c2502dd in rtl_uString_newFromSubString (ppThis=0x7fffaa6a4978,
pFrom=0x357c620, beginIndex=0, count=65535)
    at
/home/master/src/libreoffice/workdirs/libreoffice-4.2/sal/rtl/strtmpl.cxx:1269
1269            assert(false); // fail fast at least in debug builds
(gdb) list
1264            IMPL_RTL_STRINGNAME( assign )( ppThis, const_cast<
IMPL_RTL_STRINGDATA * >( pFrom ) );
1265            return;
1266        }
1267        if ( count < 0 || beginIndex < 0 || beginIndex + count >
pFrom->length )
1268        {
1269            assert(false); // fail fast at least in debug builds
1270            IMPL_RTL_STRINGNAME( newFromLiteral )( ppThis, "!!br0ken!!",
10, 0 );
1271            return;
1272        }
1273    

My guess is that length 65535 was a special magic value in the old code, to say
"the whole string", or "undefined" or something like that. But here, it is
suddenly being interpreted as an actual length.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to