incubator-ooo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Clarence GUO <clarence.guo...@gmail.com>
Subject [Call-for-​​Review][Writer]Bug 119941: Removing chart in odt file, it causes a crash.
Date Wed, 13 Jun 2012 07:00:08 GMT
Hi~
Another fix for review.

https://issues.apache.org/ooo/show_bug.cgi?id=119941

Steps:
1. Open the .odt sample file (there is three charts created with data in
table).
2. Focus on any chart, press Delete/Backspace to remove it, or press Ctrl+X
to cut it.

Issue:
Application will crash.

Root Cause:
When cut or delete the chart, SwUndoFlyBase::DelFly will call SaveSection
to store the comtent to strorage. In this step, chart filter functions will
be called. And chart filter will call chart core functions to create the
chart again. In the new chart2 base, chart core function will call a new
class ExplicitCategoryProvider to create data source. In this step, when SW
data source provider create the data source, it will create a new SwFlyFrm.
But later in SwUndoFlyBase::DelFly, it will clear anchor related attributes
of SwFlyFrm. Then finally null pointer occur.

Solution:
In pCnt->RemoveEmbeddedObject in SaveSection process for table chart, only
remove the object from the object container, without removing it's storage
and graphic stream. The chart already removed from formater.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message