Issue 120720 - Import .xls created by Excel 2007, with named drawing object, there is a crash.
Summary: Import .xls created by Excel 2007, with named drawing object, there is a crash.
Status: CLOSED FIXED
Alias: None
Product: Calc
Classification: Application
Component: open-import (show other issues)
Version: 3.4.0
Hardware: All All
: P2 Critical (vote)
Target Milestone: ---
Assignee: AOO issues mailing list
QA Contact:
URL:
Keywords: ms_interoperability, regression
Depends on:
Blocks:
 
Reported: 2012-08-27 06:57 UTC by Shan Zhu
Modified: 2013-06-07 07:16 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
.xls created by Excel2007 (19.00 KB, application/vnd.ms-excel)
2012-08-27 06:57 UTC, Shan Zhu
no flags Details
.xls created by Excel2003, which does not have this issue. (13.50 KB, application/vnd.ms-excel)
2012-08-27 06:58 UTC, Shan Zhu
no flags Details
Add patch (1.04 KB, patch)
2012-08-28 07:24 UTC, Zhang Lu
zhanglu.aoo: review?
Details | Diff

Note You need to log in before you can comment on or make changes to this issue.
Description Shan Zhu 2012-08-27 06:57:35 UTC
Created attachment 79164 [details]
.xls created by Excel2007

build r1360602
It works on r1360079

Steps:
Open the sample Book1_2007.xls created by Excel 2007, which has a drawing object in AOO.

Issue: 
Application will crash.

PS: In another attachement Book1.xls created by Excel2003, it does not have this problem.
Comment 1 Shan Zhu 2012-08-27 06:58:32 UTC
Created attachment 79165 [details]
.xls created by Excel2003, which does not have this issue.
Comment 2 Zhang Lu 2012-08-27 07:59:14 UTC
I am working on this defect.
Now I found root cause is some sdr object didn't contain a sdrmodule, when calling the API SrdOject->GetModule(), which return NULL, and cause AOO crash.

I filter side, SvxMSDffManager::ImportShape() is a key point.
In this function, sdr object group will not be set module on it. 
code:
if(aObjData.nSpFlag & SP_FGROUP)
{
   pRet = new SdrObjGroup
   ....  // there is no call function setModule(); 
} 

And if(eShapeType >= mso_sptStraightConnector1 && eShapeType <= mso_sptCurvedConnector5) the sdroject will be deleted and a new SdrEdgeObj will be created, in this process, function setModule() is not be called neither.
Comment 3 Zhang Lu 2012-08-28 07:24:10 UTC
Created attachment 79190 [details]
Add patch

Solution: To check the validate of model in a SDR object
Comment 4 liuping 2013-06-07 07:15:05 UTC
I can't reproduce on AOO400m2(Build:9701)  -  Rev. 1489073
on Win7 OS
Comment 5 liuping 2013-06-07 07:15:56 UTC
refer comments 3