Tilemap/VX: Ensure proxy objects don't outlive their parents

Either of these would previously crash (same for VX):

tm = Tilemap.new
at = tm.autotiles
tm = nil
GC.start
at[0] = Bitmap.new(1, 1)

tm = Tilemap.new
at = tm.autotiles
tm.dispose
at[0] = Bitmap.new(1, 1)

Funnily, this makes RMXP itself crash too, but crashing is
never acceptable except for possibly resource exhaustion.
This commit is contained in:
Jonas Kulla 2014-09-26 18:21:50 +02:00
parent e9d0d0566b
commit 9758e660c4
9 changed files with 41 additions and 12 deletions

View file

@ -54,7 +54,7 @@ public:
void update();
BitmapArray &getBitmapArray() const;
BitmapArray &getBitmapArray();
DECL_ATTR( Viewport, Viewport* )
DECL_ATTR( MapData, Table* )
@ -66,6 +66,7 @@ public:
private:
TilemapVXPrivate *p;
BitmapArray bmProxy;
void releaseResources();
const char *klassName() const { return "tilemap"; }