Apache OpenOffice (AOO) Bugzilla – Issue 84237
Assertions while opening Stylist
Last modified: 2017-05-20 11:15:19 UTC
Error: ResId without ResMgr created From File ..\..\inc\tools/resid.hxx at Line 79 Error: file:///c:/home/os93737/cwslocal/o_os109/SRC680/common/bin.m237/sw680de.res Class: Resource, Id: 268. Cannot load resource! Resource Stack Error: file:///C:/home/os93737/office/cwsos109/program/resource/sw680en-US.res Class: Resource, Id: 268. Cannot load resource! Resource Stack This should load the resource SfxStyleFamilies DLG_STYLE_DESIGNER which is contained in the sw680<locale>.res. Stack: ... tl680mi.dll!ResMgr::ResMgr(InternalResMgr * pImpMgr=0x0000010c) Line 1029 C++ tl680mi.dll!ResMgr::CreateFallbackResMgr(const ResId & rId={...}, const Resource * pResource=0x00efeee8) Line 1531 C++ tl680mi.dll!ResMgr::GetResource(const ResId & rId={...}, const Resource * pResObj=0x00efeee8) Line 1249 + 0x13 bytes C++ tl680mi.dll!Resource::GetRes(const ResId & rResId={...}) Line 71 C++ tl680mi.dll!Resource::Resource(const ResId & rResId={...}) Line 62 C++ sfx680mi.dll!svt::OLocalResourceAccess::OLocalResourceAccess(const ResId & _rId={...}) Line 68 + 0x40 bytes C++ sfx680mi.dll!SfxStyleFamilies::updateImages(const ResId & _rId={...}, BmpColorMode _eMode=BMP_COLOR_NORMAL) Line 175 C++ sfx680mi.dll!SfxTemplateDialog_Impl::updateFamilyImages() Line 2423 C++ sfx680mi.dll!SfxTemplateDialog_Impl::LoadedFamilies() Line 2482 C++ sfx680mi.dll!SfxCommonTemplateDialog_Impl::ReadResource() Line 980 C++
Target set to 3.0
The ResMgr is missing in void SfxTemplateDialog_Impl::updateFamilyImages(). The corresponding ResId gets created in sfx2/source/dialog/templdlg.cxx 891 void SfxCommonTemplateDialog_Impl::ReadResource() 892 { 893 // globale Benutzer-Resource auslesen 894 USHORT i; 895 for(i = 0; i < MAX_FAMILIES; ++i) 896 pFamilyState[i] = 0; 897 898 SfxViewFrame* pViewFrame = pBindings->GetDispatcher_Impl()->GetFrame(); 899 pCurObjShell = pViewFrame->GetObjectShell(); 900 ResMgr* pMgr = pCurObjShell ? pCurObjShell->GetResMgr() : NULL; 901 ResId aFamId( DLG_STYLE_DESIGNER, *pMgr ); 902 aFamId.SetRT(RSC_SFX_STYLE_FAMILIES); 903 m_pStyleFamiliesId = new ResId( aFamId.GetId(), *pMgr ); From the looks of it seems that pCurObjShell is NULL:
->pl: Sorry to disappoint you but pCurObjShell is not NULL.
Which must then mean that pCurObjShell->GetResMgr() is NULL.
pb: No, pCurObjShell->GetResMgr() is not NULL. The problem is here: sal_Bool SfxStyleFamilies::updateImages() { ... ::svt::OLocalResourceAccess aLocalRes( _rId ); // raises the assertion ... } Frank please have a look. Thx.
.
fs->pl: Actually, in line 1530 of resmgr.cxx, a ResId is created with a res manager which is NULL: ResId aId( rId.GetId(), *pFallbackResMgr ); pFallbackResMgr is NULL here. While I consider the line questionable in itself (why de-referencing a pointer which obviously can be NULL), the deeper reason seems to be that one of the involved resources is in fact not available. That is, the OLocalResourceAccess works okay, it is just fed with a non-existing resource.
pl->fs: dang, you're right, in that place it should of course be pFallback, not pFallbackResMgr. I'll create a separate issue for that. However there is still a missing resource here which needs to be fixed, too.
separate issue for ResMgr fallback is issue 83337
pb: too late for 3.0 -> 3.x.
grabbing issue
Reset assigne to the default "issues@openoffice.apache.org".