From 7c84349990f21f783f4b24c113fb372a3c00164b Mon Sep 17 00:00:00 2001 From: faketruth Date: Wed, 22 Aug 2012 14:22:21 +0000 Subject: WebAdmin should not cause crashes anymore Got rid of cWebPlugin_Lua cPlugin_Lua is also a cWebPlugin now, so plugins don't need a separate cWebPlugin object Changed some stuff to use AString instead of char* git-svn-id: http://mc-server.googlecode.com/svn/trunk@777 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cWebAdmin.cpp | 42 ++++++++---------------------------------- 1 file changed, 8 insertions(+), 34 deletions(-) (limited to 'source/cWebAdmin.cpp') diff --git a/source/cWebAdmin.cpp b/source/cWebAdmin.cpp index 9bb8e8e27..e70d60f7f 100644 --- a/source/cWebAdmin.cpp +++ b/source/cWebAdmin.cpp @@ -80,13 +80,13 @@ cWebAdmin::~cWebAdmin() delete m_Event; } -void cWebAdmin::AddPlugin( cWebPlugin* a_Plugin ) +void cWebAdmin::AddPlugin( cWebPlugin * a_Plugin ) { m_Plugins.remove( a_Plugin ); m_Plugins.push_back( a_Plugin ); } -void cWebAdmin::RemovePlugin( cWebPlugin* a_Plugin ) +void cWebAdmin::RemovePlugin( cWebPlugin * a_Plugin ) { m_Plugins.remove( a_Plugin ); } @@ -161,18 +161,10 @@ void cWebAdmin::Request_Handler(webserver::http_request* r) for (PluginList::iterator itr = WebAdmin->m_Plugins.begin(); itr != WebAdmin->m_Plugins.end(); ++itr) { cWebPlugin* WebPlugin = *itr; - cWebPlugin_Lua* LuaPlugin = dynamic_cast< cWebPlugin_Lua* >( WebPlugin ); - if( LuaPlugin ) + std::list< std::pair > NameList = WebPlugin->GetTabNames(); + for( std::list< std::pair >::iterator Names = NameList.begin(); Names != NameList.end(); ++Names ) { - std::list< std::pair > NameList = LuaPlugin->GetTabNames(); - for( std::list< std::pair >::iterator Names = NameList.begin(); Names != NameList.end(); ++Names ) - { - Menu += "
  • " + (*Names).first + "
  • "; - } - } - else - { - Menu += "
  • " + WebPlugin->GetName() + "
  • "; + Menu += "
  • " + (*Names).first + "
  • "; } } @@ -201,7 +193,7 @@ void cWebAdmin::Request_Handler(webserver::http_request* r) { if( (*itr)->GetName() == Split[1] ) { - Content = (*itr)->HandleRequest( &Request ); + Content = (*itr)->HandleWebRequest( &Request ); cWebPlugin* WebPlugin = *itr; FoundPlugin = WebPlugin->GetName(); cWebPlugin_Lua* LuaPlugin = dynamic_cast< cWebPlugin_Lua* >( WebPlugin ); @@ -229,7 +221,7 @@ void cWebAdmin::Request_Handler(webserver::http_request* r) for( cPluginManager::PluginList::const_iterator itr = List.begin(); itr != List.end(); ++itr ) { AString VersionNum; - AppendPrintf(Content, "
  • %s V.%i
  • ", (*itr)->GetName(), (*itr)->GetVersion()); + AppendPrintf(Content, "
  • %s V.%i
  • ", (*itr)->GetName().c_str(), (*itr)->GetVersion()); } } Content += ""; @@ -371,22 +363,4 @@ std::string cWebAdmin::GetTemplate() f.ReadRestOfFile(retVal); return retVal; -} - - - - - -void cWebAdmin::RemovePlugin( lua_State* L ) -{ - for( PluginList::iterator itr = m_Plugins.begin(); itr != m_Plugins.end(); ) - { - if( (*itr)->GetLuaState() == L ) - { - PluginList::iterator prev = itr++; - delete *prev; // deleting a dereferenced iterator also takes it out of the list, so no need for erase() - } - else - ++itr; - } -} +} \ No newline at end of file -- cgit v1.2.3