svx/source/svdraw/svdograf.cxx | 8 ++++++++ 1 file changed, 8 insertions(+)
New commits: commit 63a480aac59d459e9f759c5a346bebdda0c78acd 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) Signed-off-by: Michael Meeks <michael.me...@suse.com> diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx index c82b5fe..e6ed8a6 100644 --- a/svx/source/svdraw/svdograf.cxx +++ b/svx/source/svdraw/svdograf.cxx @@ -1310,6 +1310,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