From 10ddd549f395922625da2a7eee784ad865d9236d Mon Sep 17 00:00:00 2001 From: "Devin J. Pohly" Date: Tue, 24 May 2016 16:25:23 -0400 Subject: [PATCH] Make sure we always release Lua lock I have a sneaking suspicion that this also magically fixes memory cards on Linux. --- src/ActorFrame.cpp | 2 ++ src/NoteSkinManager.cpp | 2 ++ src/Player.cpp | 1 + 3 files changed, 5 insertions(+) diff --git a/src/ActorFrame.cpp b/src/ActorFrame.cpp index 148d31f348..dd165eac62 100644 --- a/src/ActorFrame.cpp +++ b/src/ActorFrame.cpp @@ -238,6 +238,7 @@ void ActorFrame::DrawPrimitives() m_DrawFunction.PushSelf( L ); if( lua_isnil(L, -1) ) { + LUA->Release(L); LuaHelpers::ReportScriptErrorFmt( "Error compiling DrawFunction" ); return; } @@ -487,6 +488,7 @@ void ActorFrame::UpdateInternal( float fDeltaTime ) m_UpdateFunction.PushSelf( L ); if( lua_isnil(L, -1) ) { + LUA->Release(L); LuaHelpers::ReportScriptErrorFmt( "Error compiling UpdateFunction" ); return; } diff --git a/src/NoteSkinManager.cpp b/src/NoteSkinManager.cpp index 9d38562394..012651611c 100644 --- a/src/NoteSkinManager.cpp +++ b/src/NoteSkinManager.cpp @@ -487,6 +487,7 @@ Actor *NoteSkinManager::LoadActor( const RString &sButton, const RString &sEleme if( !PushActorTemplate(L, sButton, sElement, bSpriteOnly) ) { + LUA->Release( L ); // ActorUtil will warn about the error return Sprite::NewBlankSprite(); } @@ -494,6 +495,7 @@ Actor *NoteSkinManager::LoadActor( const RString &sButton, const RString &sEleme auto_ptr pNode( XmlFileUtil::XNodeFromTable(L) ); if( pNode.get() == NULL ) { + LUA->Release( L ); // XNode will warn about the error return Sprite::NewBlankSprite(); } diff --git a/src/Player.cpp b/src/Player.cpp index ce05ba414c..b29eeb22da 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -3142,6 +3142,7 @@ void Player::SetHoldJudgment( TapNote &tn, int iTrack ) Lua* L = LUA->Get(); tn.PushSelf(L); msg.SetParamFromStack( L, "TapNote" ); + LUA->Release( L ); MESSAGEMAN->Broadcast( msg ); }