Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/func.cc')
-rw-r--r--src/core/func.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/core/func.cc b/src/core/func.cc
index be5aca3..4072f39 100644
--- a/src/core/func.cc
+++ b/src/core/func.cc
@@ -20,11 +20,15 @@ Func::Registry Func::func_registry;
Func * Func::add(const char *name, FuncPtr functionptr, bool shared)
{
+ if (!name || !functionptr)
+ return 0;
+
Func *func = 0;
Registry::iterator it = func_registry.find(name);
if (it == func_registry.end()) {
- func = new Func(name, (void *)functionptr, shared ? Shared : 0);
- func_registry[std::string(name)] = func;
+ std::string funcname(name);
+ func = new Func(funcname.c_str(), (void *)functionptr, shared ? Shared : 0);
+ func_registry[func->name()] = func;
//con_debug << "Function '" << name << "' registered." << std::endl;
} else {
con_warn << "Function '" << name << "' already registered!" << std::endl;
@@ -35,10 +39,14 @@ Func * Func::add(const char *name, FuncPtr functionptr, bool shared)
Func *Func::add(const char *name, GameFuncPtr gamefunctionptr)
{
+ if (!name || !gamefunctionptr)
+ return 0;
+
Func *func = 0;
Registry::iterator it = func_registry.find(name);
if (it == func_registry.end()) {
- func = new Func(name, (void *)gamefunctionptr, Game);
+ std::string funcname(name);
+ func = new Func(funcname.c_str(), (void *)gamefunctionptr, Game);
func_registry[func->name()] = func;
//con_debug << "Function '" << name << "' registered." << std::endl;
} else {
@@ -50,10 +58,14 @@ Func *Func::add(const char *name, GameFuncPtr gamefunctionptr)
Func *Func::add(const char *name, TargetFuncPtr targetfunctionptr)
{
+ if (!name || !targetfunctionptr)
+ return 0;
+
Func *func = 0;
Registry::iterator it = func_registry.find(name);
if (it == func_registry.end()) {
- func = new Func(name, (void *)targetfunctionptr, Game | Target);
+ std::string funcname(name);
+ func = new Func(funcname.c_str(), (void *)targetfunctionptr, Game | Target);
func_registry[func->name()] = func;
//con_debug << "Function '" << name << "' registered." << std::endl;
} else {