#9 error in ChangeMeshResolution

open
nobody
None
5
2007-06-05
2007-06-05
Valentin Naumov
No

When I try to open some u3d files, specifically those extracted from pdfs created with RenderPlus pdf creator, RPS 3D PDF 1.0 C29, the player crashes.

Opening file fails in cifxclodmodifier.cpp, ChangeMeshResolution(), line 481, where a function call
fails and returns null pointer, but the result is not checked/processed:
>>> m_pInputDataPacket->GetDataElement(m_meshGroupIndex, (void**) &pUnk);
>>> pUnk->QueryInterface(IID_IFXMeshGroup, (void**)&pMg);
Here pUnk is null.

The line: m_pInputDataPacket->GetDataElement(m_meshGroupIndex, (void**) &pUnk);
fails with error -2130444287 - IFX_E_DATAPACKET_INVALID_INDEX,
and pUnk is null on return.

Further debuging shows that CIFXModifierDataPacket::GetDataElement, cifmodifierdatapacket.cpp
fails on line 279:
if( IFXSUCCESS(result) && m_pState->m_LockedDataElement == inDataElementIndex )
{
result = IFX_E_DATAPACKET_LOCKED;
}

but few lines below the result is changed to IFX_E_DATAPACKET_INVALID_INDEX.

Do you know how to fix it?
Do not know how to attach the u3d file.

Also on another u3d file, there was a crash in IFXMixerQueueImpl.cpp, IFXMixerQueueImpl::Push
It does not check whether GetMotionMixerNR(0) returns non-zero pointer.
Added check for null pointer, and now the file is opened without crashing.

Discussion

  • crashing file

     
    Attachments