svx/source/svdraw/svdograf.cxx | 8 ++++++++ 1 file changed, 8 insertions(+)
New commits: commit 0c6d89941118368ccbb596362a545db5d3a07dbe Author: Michael Stahl <mst...@redhat.com> Date: Wed Feb 29 22:34:51 2012 +0100 fdo#46340: fix crash in SdrGrafObj::getInputStream: Add the ridiculous hack that used to be here (and distributed across various GetDocumentStream methods to make it non-obvious) that makes this not crash by accident. (regression from fd95f1ab6220c6a530fd2e4e727417f504a5db51) diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx index 23f81df..6fd9cf3 100644 --- a/svx/source/svdraw/svdograf.cxx +++ b/svx/source/svdraw/svdograf.cxx @@ -1335,6 +1335,14 @@ Reference< XInputStream > SdrGrafObj::getInputStream() ::comphelper::LifecycleProxy proxy; xStream.set( pModel->GetDocumentStream(pGraphic->GetUserData(), proxy)); + // fdo#46340: this may look completely insane, and it is, + // but it also prevents a crash: the LifecycleProxy will go out + // of scope, but the xStream must be returned; the UcbStreamHelper + // will actually copy the xStream to a temp file (because it is + // not seekable), which makes it not crash... + SvStream *const pStream = + utl::UcbStreamHelper::CreateStream(xStream); + xStream.set(new utl::OInputStreamWrapper(pStream, true)); } else if( pGraphic && GetGraphic().IsLink() ) { _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits