Initial fixes to ensure static strings passed to new convars

Also fixed minor warning in smn_bitbuffer.cpp

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40517
This commit is contained in:
Scott Ehlert 2007-02-17 05:33:31 +00:00
parent 314f3401c8
commit e7759cabea
2 changed files with 9 additions and 4 deletions

View File

@ -97,7 +97,7 @@ void CConVarManager::OnPluginDestroyed(IPlugin *plugin)
void CConVarManager::OnHandleDestroy(HandleType_t type, void *object) void CConVarManager::OnHandleDestroy(HandleType_t type, void *object)
{ {
ConVarInfo *info; ConVarInfo *info;
ConCommandBase *cvar = static_cast<ConCommandBase *>(object); ConVar *cvar = static_cast<ConVar *>(object);
// Find convar in lookup trie // Find convar in lookup trie
sm_trie_retrieve(m_ConVarCache, cvar->GetName(), reinterpret_cast<void **>(&info)); sm_trie_retrieve(m_ConVarCache, cvar->GetName(), reinterpret_cast<void **>(&info));
@ -105,6 +105,11 @@ void CConVarManager::OnHandleDestroy(HandleType_t type, void *object)
// If convar was created by SourceMod plugin... // If convar was created by SourceMod plugin...
if (info->sourceMod) if (info->sourceMod)
{ {
// Delete string allocations
delete [] cvar->GetName();
delete [] cvar->GetDefault();
delete [] cvar->GetHelpText();
// Then unregister it // Then unregister it
g_SMAPI->UnregisterConCmdBase(g_PLAPI, cvar); g_SMAPI->UnregisterConCmdBase(g_PLAPI, cvar);
} }
@ -205,7 +210,7 @@ Handle_t CConVarManager::CreateConVar(IPluginContext *pContext, const char *name
} }
// Since we didn't find an existing convar (or concmd with the same name), now we can finally create it! // Since we didn't find an existing convar (or concmd with the same name), now we can finally create it!
cvar = new ConVar(name, defaultVal, flags, helpText, hasMin, min, hasMax, max); cvar = new ConVar(sm_strdup(name), sm_strdup(defaultVal), flags, sm_strdup(helpText), hasMin, min, hasMax, max);
// Find plugin creating convar // Find plugin creating convar
IPlugin *pl = g_PluginSys.FindPluginByContext(pContext->GetContext()); IPlugin *pl = g_PluginSys.FindPluginByContext(pContext->GetContext());

View File

@ -12,10 +12,10 @@
* Version: $Id$ * Version: $Id$
*/ */
#include <bitbuf.h>
#include <vector.h>
#include "sourcemod.h" #include "sourcemod.h"
#include "HandleSys.h" #include "HandleSys.h"
#include <bitbuf.h>
#include <vector.h>
static cell_t smn_BfWriteBool(IPluginContext *pCtx, const cell_t *params) static cell_t smn_BfWriteBool(IPluginContext *pCtx, const cell_t *params)
{ {