Merge pull request #1132 from djpohly/release-the-music-i-mean-lua

Release Lua locks responsibly; fix a USB profile crash
This commit is contained in:
Jason Felds
2016-05-25 18:45:23 -04:00
3 changed files with 5 additions and 0 deletions
+2
View File
@@ -238,6 +238,7 @@ void ActorFrame::DrawPrimitives()
m_DrawFunction.PushSelf( L ); m_DrawFunction.PushSelf( L );
if( lua_isnil(L, -1) ) if( lua_isnil(L, -1) )
{ {
LUA->Release(L);
LuaHelpers::ReportScriptErrorFmt( "Error compiling DrawFunction" ); LuaHelpers::ReportScriptErrorFmt( "Error compiling DrawFunction" );
return; return;
} }
@@ -487,6 +488,7 @@ void ActorFrame::UpdateInternal( float fDeltaTime )
m_UpdateFunction.PushSelf( L ); m_UpdateFunction.PushSelf( L );
if( lua_isnil(L, -1) ) if( lua_isnil(L, -1) )
{ {
LUA->Release(L);
LuaHelpers::ReportScriptErrorFmt( "Error compiling UpdateFunction" ); LuaHelpers::ReportScriptErrorFmt( "Error compiling UpdateFunction" );
return; return;
} }
+2
View File
@@ -487,6 +487,7 @@ Actor *NoteSkinManager::LoadActor( const RString &sButton, const RString &sEleme
if( !PushActorTemplate(L, sButton, sElement, bSpriteOnly) ) if( !PushActorTemplate(L, sButton, sElement, bSpriteOnly) )
{ {
LUA->Release( L );
// ActorUtil will warn about the error // ActorUtil will warn about the error
return Sprite::NewBlankSprite(); return Sprite::NewBlankSprite();
} }
@@ -494,6 +495,7 @@ Actor *NoteSkinManager::LoadActor( const RString &sButton, const RString &sEleme
auto_ptr<XNode> pNode( XmlFileUtil::XNodeFromTable(L) ); auto_ptr<XNode> pNode( XmlFileUtil::XNodeFromTable(L) );
if( pNode.get() == NULL ) if( pNode.get() == NULL )
{ {
LUA->Release( L );
// XNode will warn about the error // XNode will warn about the error
return Sprite::NewBlankSprite(); return Sprite::NewBlankSprite();
} }
+1
View File
@@ -3142,6 +3142,7 @@ void Player::SetHoldJudgment( TapNote &tn, int iTrack )
Lua* L = LUA->Get(); Lua* L = LUA->Get();
tn.PushSelf(L); tn.PushSelf(L);
msg.SetParamFromStack( L, "TapNote" ); msg.SetParamFromStack( L, "TapNote" );
LUA->Release( L );
MESSAGEMAN->Broadcast( msg ); MESSAGEMAN->Broadcast( msg );
} }