Skip to content

Commit

Permalink
fixes some crashes like #9
Browse files Browse the repository at this point in the history
  • Loading branch information
aarcangeli committed Apr 19, 2019
1 parent abb308a commit 25c18b7
Show file tree
Hide file tree
Showing 17 changed files with 40 additions and 36 deletions.
5 changes: 4 additions & 1 deletion Serious-Engine/Sources/Engine/Entities/Entity.h
Original file line number Diff line number Diff line change
Expand Up @@ -689,7 +689,10 @@ inline const CEntityPointer &CEntityPointer::operator=(const CEntityPointer &pen
}
inline CEntity* CEntityPointer::operator->(void) const { return ep_pen; }
inline CEntityPointer::operator CEntity*(void) const { return ep_pen; }
inline CEntity& CEntityPointer::operator*(void) const { return *ep_pen; }
inline CEntity& CEntityPointer::operator*(void) const {
ASSERT(ep_pen);
return *ep_pen;
}

/////////////////////////////////////////////////////////////////////
// Reference counting functions
Expand Down
4 changes: 2 additions & 2 deletions Serious-Engine/Sources/EntitiesMP/AirElemental.es
Original file line number Diff line number Diff line change
Expand Up @@ -273,8 +273,8 @@ functions:
// triggers
if (fHealth<=fOldHealth && fHealth>fNewHealth)
{
if (&*penTrigger[i]) {
SendToTarget(&*penTrigger[i], EET_TRIGGER, FixupCausedToPlayer(this, m_penEnemy));
if (penTrigger[i].ep_pen) {
SendToTarget(penTrigger[i].ep_pen, EET_TRIGGER, FixupCausedToPlayer(this, m_penEnemy));
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions Serious-Engine/Sources/EntitiesMP/BloodSpray.es
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,8 @@ procedures:
}

if (m_penOwner->GetPhysicsFlags()&EPF_MOVABLE) {
m_vGDir = ((CMovableEntity *)&*m_penOwner)->en_vGravityDir;
m_fGA = ((CMovableEntity *)&*m_penOwner)->en_fGravityA;
m_vGDir = ((CMovableEntity *) m_penOwner.ep_pen)->en_vGravityDir;
m_fGA = ((CMovableEntity *) m_penOwner.ep_pen)->en_fGravityA;
} else {
FLOATmatrix3D &m = m_penOwner->en_mRotation;
m_vGDir = FLOAT3D(-m(1,2), -m(2,2), -m(3,2));
Expand Down
14 changes: 7 additions & 7 deletions Serious-Engine/Sources/EntitiesMP/Camera.es
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ functions:
FLOAT3D vTarget=FLOAT3D(0,0,0);
if( m_penTarget!=NULL)
{
CCameraMarker *pcm = &(CCameraMarker&)*m_penTarget;
CCameraMarker *pcm = (CCameraMarker*) m_penTarget.ep_pen;
if( pcm->m_penViewTarget!=NULL)
{
vTarget=pcm->m_penViewTarget->GetLerpedPlacement().pl_PositionVector+m_vRelTargetOffset;
Expand Down Expand Up @@ -240,7 +240,7 @@ functions:
FLOAT3D vTarget=FLOAT3D(0,0,0);
if( m_penTarget!=NULL)
{
CCameraMarker *pcm = &(CCameraMarker&)*m_penTarget;
CCameraMarker *pcm = (CCameraMarker*) m_penTarget.ep_pen;
if( pcm->m_penViewTarget!=NULL)
{
vTarget=pcm->m_penViewTarget->GetPlacement().pl_PositionVector+m_vRelTargetOffset;
Expand Down Expand Up @@ -284,7 +284,7 @@ functions:
pcmNm1 = pcmNp0;
pcmNp0 = pcmNp1;
pcmNp1 = pcmNp2;
pcmNp2 = (CCameraMarker*)&*pcmNp2->m_penTarget;
pcmNp2 = (CCameraMarker*) pcmNp2->m_penTarget.ep_pen;

// disable lerping
bLerping = FALSE;
Expand Down Expand Up @@ -525,12 +525,12 @@ procedures:
// check all markers for correct type and numbers
INDEX ctMarkers=1;
INDEX ctNonSkipped=0;
CCameraMarker *pcm0 = (CCameraMarker*)&*m_penTarget;
CCameraMarker *pcm = (CCameraMarker*)&*pcm0->m_penTarget;
CCameraMarker *pcm0 = (CCameraMarker*) m_penTarget.ep_pen;
CCameraMarker *pcm = (CCameraMarker*) pcm0->m_penTarget.ep_pen;
// loop thru markers
while( pcm!=NULL && pcm->m_penTarget!=pcm0)
{
pcm = (CCameraMarker*)&*pcm->m_penTarget;
pcm = (CCameraMarker*) pcm->m_penTarget.ep_pen;
if (pcm==NULL) {
WarningMessage( "Movable camera - broken link!");
return;
Expand Down Expand Up @@ -571,7 +571,7 @@ procedures:
m_bStopMoving = FALSE;
m_penLast = pcm; // keep last marker
ASSERT( pcm->m_penTarget == m_penTarget);
pcm = (CCameraMarker*)&*m_penTarget;
pcm = (CCameraMarker*) m_penTarget.ep_pen;
m_colFade0 = m_colFade1 = pcm->m_colFade;

// register camera as movable entity
Expand Down
2 changes: 1 addition & 1 deletion Serious-Engine/Sources/EntitiesMP/Common/Common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1432,7 +1432,7 @@ class CWorldSettingsController *GetWSC(CEntity *pen)
class CBackgroundViewer *penBcgViewer = (CBackgroundViewer *) pen->GetWorld()->GetBackgroundViewer();
if( penBcgViewer != NULL) {
// obtain world settings controller
pwsc = (CWorldSettingsController *) &*penBcgViewer->m_penWorldSettingsController;
pwsc = (CWorldSettingsController *) penBcgViewer->m_penWorldSettingsController.ep_pen;
}
return pwsc;
}
Expand Down
6 changes: 3 additions & 3 deletions Serious-Engine/Sources/EntitiesMP/Common/Particles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -464,11 +464,11 @@ void Particles_ViewerLocal(CEntity *penView)
if (penBcgViewer != NULL)
{
// obtain world settings controller
pwsc = (CWorldSettingsController *)&*penBcgViewer->m_penWorldSettingsController;
pwsc = (CWorldSettingsController *) penBcgViewer->m_penWorldSettingsController.ep_pen;
if (pwsc != NULL)
{
// obtain environment particles holder
eph = (CEnvironmentParticlesHolder *)&*pwsc->m_penEnvPartHolder;
eph = (CEnvironmentParticlesHolder *) pwsc->m_penEnvPartHolder.ep_pen;
}
}

Expand Down Expand Up @@ -546,7 +546,7 @@ void Particles_ViewerLocal(CEntity *penView)
}

// next environment particles holder
eph = (CEnvironmentParticlesHolder *)&*eph->m_penNextHolder;
eph = (CEnvironmentParticlesHolder *) eph->m_penNextHolder.ep_pen;
if (!(IsOfClass(eph, "EnvironmentParticlesHolder"))) break;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ procedures:
{
on (EBegin) : {
if (m_penTarget!=NULL) {
HUD_SetEntityForStackDisplay((CRationalEntity *)&*m_penTarget);
HUD_SetEntityForStackDisplay((CRationalEntity *) m_penTarget.ep_pen);
} else {
HUD_SetEntityForStackDisplay(NULL);
}
Expand Down
6 changes: 3 additions & 3 deletions Serious-Engine/Sources/EntitiesMP/DestroyableArchitecture.es
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ functions:
static const CTString strMarkerUnused("Marker not set");
if (iGradient==1)
{
CGradientMarker *pgm = (CGradientMarker *)&*m_penGradient;
CGradientMarker *pgm = (CGradientMarker *) m_penGradient.ep_pen;
if (pgm != NULL) {
return pgm->GetGradientName();
} else {
Expand All @@ -186,7 +186,7 @@ functions:
/* Uncache shadows for given gradient */
void UncacheShadowsForGradient(class CGradientMarker *penDiscard)
{
CGradientMarker *pgm = (CGradientMarker *)&*m_penGradient;
CGradientMarker *pgm = (CGradientMarker *) m_penGradient.ep_pen;
if(pgm == penDiscard)
{
CEntity::UncacheShadowsForGradient(1);
Expand All @@ -198,7 +198,7 @@ functions:
{
if ( iGradient==1)
{
CGradientMarker *pgm = (CGradientMarker *)&*m_penGradient;
CGradientMarker *pgm = (CGradientMarker *) m_penGradient.ep_pen;
if (pgm != NULL) {
return pgm->GetGradient(0, fpGradient);
}
Expand Down
2 changes: 1 addition & 1 deletion Serious-Engine/Sources/EntitiesMP/EnemyBase.es
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ functions:
class CWatcher *GetWatcher(void)
{
ASSERT(m_penWatcher!=NULL);
return (CWatcher*)&*m_penWatcher;
return (CWatcher*) m_penWatcher.ep_pen;
}
export void Copy(CEntity &enOther, ULONG ulFlags)
{
Expand Down
2 changes: 1 addition & 1 deletion Serious-Engine/Sources/EntitiesMP/EnemyCounter.es
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ functions:
if (m_penMainMusicHolder==NULL) {
m_penMainMusicHolder = _pNetwork->GetEntityWithName("MusicHolder", 0);
}
return (CMusicHolder *)&*m_penMainMusicHolder;
return (CMusicHolder *) m_penMainMusicHolder.ep_pen;
}
void StartCounting(void)
{
Expand Down
2 changes: 1 addition & 1 deletion Serious-Engine/Sources/EntitiesMP/ExotechLarva.es
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ functions:
CBackgroundViewer *penBcgViewer = (CBackgroundViewer *) GetWorld()->GetBackgroundViewer();
if( penBcgViewer != NULL) {
// obtain world settings controller
pwsc = (CWorldSettingsController *) &*penBcgViewer->m_penWorldSettingsController;
pwsc = (CWorldSettingsController *) penBcgViewer->m_penWorldSettingsController.ep_pen;
}
return pwsc;
}
Expand Down
4 changes: 2 additions & 2 deletions Serious-Engine/Sources/EntitiesMP/ExotechLarvaCharger.es
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ functions:
CEntityPointer *penFirst = &m_penBattery01;

for (INDEX i=0; i<6; i++) {
CExotechLarvaBattery *penBattery = (CExotechLarvaBattery *)&(*penFirst[i]);
CExotechLarvaBattery *penBattery = (CExotechLarvaBattery *) (penFirst[i].ep_pen);
// if model pointer is valid
if (penBattery) {
if (penBattery->m_bActive) {
Expand Down Expand Up @@ -156,7 +156,7 @@ functions:
CEntityPointer *penFirst = &m_penBattery01;

for (INDEX i=0; i<6; i++) {
CExotechLarvaBattery *penBattery = (CExotechLarvaBattery *)&(*penFirst[i]);
CExotechLarvaBattery *penBattery = (CExotechLarvaBattery *) (penFirst[i].ep_pen);
// if model pointer is valid
if (penBattery) {
if (penBattery->m_bActive) {
Expand Down
2 changes: 1 addition & 1 deletion Serious-Engine/Sources/EntitiesMP/Lightning.es
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ functions:
// if light entity
if (IsOfClass(m_penLight, "Light"))
{
CLight *penLight = (CLight*)&*m_penLight;
CLight *penLight = (CLight*) m_penLight.ep_pen;

if (slPropertyOffset==offsetof(CLightning, m_iLightAnim))
{
Expand Down
4 changes: 2 additions & 2 deletions Serious-Engine/Sources/EntitiesMP/MovingBrush.es
Original file line number Diff line number Diff line change
Expand Up @@ -800,10 +800,10 @@ procedures:

INDEX ctMarkers=0;
// new moving target
CMovingBrushMarker *pmbm = (CMovingBrushMarker *) &*m_penTarget;
CMovingBrushMarker *pmbm = (CMovingBrushMarker *) m_penTarget.ep_pen;
while( pmbm!=NULL && IsOfClass(pmbm->m_penTarget, "Moving Brush Marker") && !pmbm->m_bStopMoving && ctMarkers<50)
{
pmbm = (CMovingBrushMarker *) &*pmbm->m_penTarget;
pmbm = (CMovingBrushMarker *) pmbm->m_penTarget.ep_pen;
ctMarkers++;
}

Expand Down
12 changes: 6 additions & 6 deletions Serious-Engine/Sources/EntitiesMP/PyramidSpaceShip.es
Original file line number Diff line number Diff line change
Expand Up @@ -236,16 +236,16 @@ functions:
m_epssState = PSSS_MOVING;
// check all markers for correct type and numbers
INDEX ctMarkers=1;
CPyramidSpaceShipMarker *pcm0 = (CPyramidSpaceShipMarker*)&*m_penTarget;
CPyramidSpaceShipMarker *pcm0 = (CPyramidSpaceShipMarker*) m_penTarget.ep_pen;
if( pcm0 == NULL)
{
return;
}
CPyramidSpaceShipMarker *pcm = (CPyramidSpaceShipMarker*)&*pcm0->m_penTarget;
CPyramidSpaceShipMarker *pcm = (CPyramidSpaceShipMarker*) pcm0->m_penTarget.ep_pen;
// loop thru markers
while( pcm!=NULL && pcm->m_penTarget!=pcm0)
{
pcm = (CPyramidSpaceShipMarker*)&*pcm->m_penTarget;
pcm = (CPyramidSpaceShipMarker*) pcm->m_penTarget.ep_pen;
if (pcm==NULL) {
WarningMessage( "Space ship path - broken link!");
return;
Expand Down Expand Up @@ -768,7 +768,7 @@ procedures:
}

HideBeamMachine();
InitializePathMoving( (CPyramidSpaceShipMarker*)&*m_penFlyAwayTarget);
InitializePathMoving( (CPyramidSpaceShipMarker*) m_penFlyAwayTarget.ep_pen);
return EReturn();
}

Expand Down Expand Up @@ -950,7 +950,7 @@ procedures:
{
SwitchToModel();
}
InitializePathMoving((CPyramidSpaceShipMarker*)&*m_penTarget);
InitializePathMoving((CPyramidSpaceShipMarker*) m_penTarget.ep_pen);
resume;
}
on( ETrigger):
Expand Down Expand Up @@ -978,7 +978,7 @@ procedures:
if(m_epssState != PSSS_IDLE)
{
m_penTarget = eForcePathMarker.penForcedPathMarker;
InitializePathMoving((CPyramidSpaceShipMarker*)&*m_penTarget);
InitializePathMoving((CPyramidSpaceShipMarker*) m_penTarget.ep_pen);
}
resume;
}
Expand Down
2 changes: 1 addition & 1 deletion Serious-Engine/Sources/EntitiesMP/Watcher.es
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ functions:
class CEnemyBase *GetOwner(void)
{
ASSERT(m_penOwner!=NULL);
return (CEnemyBase*)&*m_penOwner;
return (CEnemyBase*) m_penOwner.ep_pen;
}

// find one player number by random
Expand Down
3 changes: 2 additions & 1 deletion print-stack.bat
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
cd %~dp0
adb logcat -c
adb logcat | ndk-stack -sym app\build\intermediates\cmake\release\obj\armeabi-v7a > stack.txt
adb logcat | ndk-stack -sym app\build\intermediates\cmake\release\obj\armeabi-v7a > stack.txt

0 comments on commit 25c18b7

Please sign in to comment.