what
This commit is contained in:
parent
dafc10d878
commit
d0d08800ef
|
@ -541,29 +541,26 @@ void CPluginMngr::CacheAndLoadModules(const char *plugin)
|
||||||
|
|
||||||
CVector<LibDecoder *> expects;
|
CVector<LibDecoder *> expects;
|
||||||
CVector<LibDecoder *> defaults;
|
CVector<LibDecoder *> defaults;
|
||||||
|
CStack<LibDecoder *> delstack;
|
||||||
for (int i=0; i<num; i++)
|
for (int i=0; i<num; i++)
|
||||||
{
|
{
|
||||||
amx_GetTag(&amx, i, name, &tag_id);
|
amx_GetTag(&amx, i, name, &tag_id);
|
||||||
if (name[0] == '?')
|
if (name[0] == '?')
|
||||||
{
|
{
|
||||||
LibDecoder *dc = new LibDecoder;
|
LibDecoder *dc = new LibDecoder;
|
||||||
|
delstack.push(dc);
|
||||||
if (DecodeLibCmdString(name, dc))
|
if (DecodeLibCmdString(name, dc))
|
||||||
{
|
{
|
||||||
if (dc->cmd == LibCmd_ForceLib)
|
if (dc->cmd == LibCmd_ForceLib)
|
||||||
{
|
{
|
||||||
RunLibCommand(dc);
|
RunLibCommand(dc);
|
||||||
delete dc;
|
|
||||||
} else if ( (dc->cmd == LibCmd_ExpectClass) ||
|
} else if ( (dc->cmd == LibCmd_ExpectClass) ||
|
||||||
(dc->cmd == LibCmd_ExpectLib) )
|
(dc->cmd == LibCmd_ExpectLib) )
|
||||||
{
|
{
|
||||||
expects.push_back(dc);
|
expects.push_back(dc);
|
||||||
} else if (dc->cmd == LibCmd_DefaultLib) {
|
} else if (dc->cmd == LibCmd_DefaultLib) {
|
||||||
defaults.push_back(dc);
|
defaults.push_back(dc);
|
||||||
} else {
|
|
||||||
delete dc;
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
delete dc;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -571,12 +568,19 @@ void CPluginMngr::CacheAndLoadModules(const char *plugin)
|
||||||
for (size_t i=0; i<expects.size(); i++)
|
for (size_t i=0; i<expects.size(); i++)
|
||||||
{
|
{
|
||||||
RunLibCommand(expects[i]);
|
RunLibCommand(expects[i]);
|
||||||
delete expects[i];
|
|
||||||
}
|
}
|
||||||
for (size_t i=0; i<defaults.size(); i++)
|
for (size_t i=0; i<defaults.size(); i++)
|
||||||
{
|
{
|
||||||
RunLibCommand(defaults[i]);
|
RunLibCommand(defaults[i]);
|
||||||
delete defaults[i];
|
}
|
||||||
|
|
||||||
|
expects.clear();
|
||||||
|
defaults.clear();
|
||||||
|
|
||||||
|
while (!delstack.empty())
|
||||||
|
{
|
||||||
|
delete delstack.front();
|
||||||
|
delstack.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -42,14 +42,18 @@ enum LibError
|
||||||
LibErr_NoClass,
|
LibErr_NoClass,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LibDecoder
|
class LibDecoder
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
LibDecoder() : buffer(NULL)
|
LibDecoder() : buffer(NULL)
|
||||||
{
|
{
|
||||||
};
|
}
|
||||||
~LibDecoder()
|
~LibDecoder()
|
||||||
{
|
{
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
buffer = NULL;
|
||||||
|
param1 = NULL;
|
||||||
|
param2 = NULL;
|
||||||
}
|
}
|
||||||
char *buffer;
|
char *buffer;
|
||||||
char *param1;
|
char *param1;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user