From 908d186fea9cd85462b9e819e1247dc1e125bd7a Mon Sep 17 00:00:00 2001 From: Tim Sarbin Date: Sun, 17 Nov 2019 22:55:31 -0500 Subject: [PATCH] Prevent some map load crashes. (#206) --- d2render/animated_entity.go | 4 ++-- d2render/d2mapengine/region.go | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/d2render/animated_entity.go b/d2render/animated_entity.go index 2f947e9a..00fb29db 100644 --- a/d2render/animated_entity.go +++ b/d2render/animated_entity.go @@ -161,7 +161,7 @@ func (v *AnimatedEntity) Render(target *ebiten.Image, offsetX, offsetY int) { } } } - if v.currentFrame < 0 || v.frames == nil || v.currentFrame > len(v.frames) || v.frames[v.currentFrame] == nil { + if v.currentFrame < 0 || v.frames == nil || v.currentFrame >= len(v.frames) || v.frames[v.currentFrame] == nil { return } localX := (v.subcellX - v.subcellY) * 16 @@ -248,7 +248,7 @@ func (v *AnimatedEntity) updateFrameCache() { if v.Cof.CofLayers[cofLayerIdx].Transparent { transparency = byte(128) } - if animationIdx > len(dccLayer.Directions[v.direction].Frames) { + if animationIdx >= len(dccLayer.Directions[v.direction].Frames) { log.Printf("Invalid animation index of %d for animated entity", animationIdx) continue } diff --git a/d2render/d2mapengine/region.go b/d2render/d2mapengine/region.go index 352c9707..01268ef3 100644 --- a/d2render/d2mapengine/region.go +++ b/d2render/d2mapengine/region.go @@ -203,6 +203,9 @@ func (v *Region) renderWall(tile d2ds1.WallRecord, offsetX, offsetY int, target img := v.GetImageCacheRecord(tile.MainIndex, tile.SubIndex, tile.Orientation) if img == nil { img = v.generateWallCache(tile) + if img == nil { + return + } } tileData := v.getTile(int32(tile.MainIndex), int32(tile.SubIndex), int32(tile.Orientation)) if tileData == nil {