[Libreoffice-commits] core.git: Branch 'aoo/trunk' - svtools/source
Armin Le Grand
alg at apache.org
Mon Sep 1 05:07:44 PDT 2014
svtools/source/graphic/grfmgr2.cxx | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
New commits:
commit ca436d4da64e6a06832c324ccf5c0236a9ec90d7
Author: Armin Le Grand <alg at apache.org>
Date: Mon Sep 1 10:32:51 2014 +0000
i125519 check GraphicObject existance before accessing it
diff --git a/svtools/source/graphic/grfmgr2.cxx b/svtools/source/graphic/grfmgr2.cxx
index 5cac068..bc09415 100644
--- a/svtools/source/graphic/grfmgr2.cxx
+++ b/svtools/source/graphic/grfmgr2.cxx
@@ -358,8 +358,33 @@ void GraphicManager::ImplCheckSizeOfSwappedInGraphics()
// do not swap out when we have less than 16KB data objects
if(nSizeBytes >= (16 * 1024))
{
- pObj->FireSwapOutRequest();
- nUsedSize = (nSizeBytes < nUsedSize) ? nUsedSize - nSizeBytes : 0;
+ // #125519# need to check if GraphicObject is still alive
+ GraphicObject* pObj2 = 0;
+ bool bExists(false);
+
+ for(pObj2 = (GraphicObject*)maObjList.First(); !bExists && pObj2; pObj2 = (GraphicObject*)maObjList.Next())
+ {
+ if(pObj2 && pObj2 == pObj)
+ {
+ bExists = true;
+ }
+ }
+
+ if(bExists)
+ {
+ // #125519# okay, swap it out
+ pObj->FireSwapOutRequest();
+ nUsedSize = (nSizeBytes < nUsedSize) ? nUsedSize - nSizeBytes : 0;
+ }
+ else
+ {
+ // #125519# error: object was deleted while still a member in aCandidates. This means that
+ // an earlier call to pObj->FireSwapOutRequest() on an other GraphicObject has as
+ // a side effect *deleted* and thus removed another GraphicObject from the local
+ // list (maObjList). This must of course be avoided.
+ // To check without need to run in debugger, optionally temporarily reactivate the beep below
+ // Sound::Beep();
+ }
}
}
}
More information about the Libreoffice-commits
mailing list