From 3ed4224970a8109048626272c736824463910595 Mon Sep 17 00:00:00 2001 From: nitrocaster Date: Sun, 6 Dec 2015 15:10:35 +0300 Subject: [PATCH] Refactor CScriptEngine::parse_script_namespace function. --- src/xrScriptEngine/script_engine.hpp | 2 +- src/xrScriptEngine/script_engine_inline.hpp | 22 +++++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/xrScriptEngine/script_engine.hpp b/src/xrScriptEngine/script_engine.hpp index 1d467a529d1..e91cc38a4ba 100644 --- a/src/xrScriptEngine/script_engine.hpp +++ b/src/xrScriptEngine/script_engine.hpp @@ -166,7 +166,7 @@ class XRSCRIPTENGINE_API CScriptEngine bool process_file(LPCSTR file_name); bool process_file(LPCSTR file_name, bool reload_modules); bool function_object(LPCSTR function_to_call, luabind::object &object, int type = LUA_TFUNCTION); - IC void parse_script_namespace(LPCSTR function_to_call, LPSTR name_space, u32 const namespace_size, LPSTR function, u32 const function_size); + IC void parse_script_namespace(const char *name, char *ns, u32 nsSize, char *func, u32 funcSize); template IC bool functor(LPCSTR function_to_call, luabind::functor &lua_function); #ifdef USE_DEBUGGER diff --git a/src/xrScriptEngine/script_engine_inline.hpp b/src/xrScriptEngine/script_engine_inline.hpp index 0f0ef40f987..4b4fd1511a0 100644 --- a/src/xrScriptEngine/script_engine_inline.hpp +++ b/src/xrScriptEngine/script_engine_inline.hpp @@ -23,25 +23,21 @@ CScriptProcess *CScriptEngine::script_process(const ScriptProcessor &process_id) return nullptr; } -IC void CScriptEngine::parse_script_namespace(LPCSTR function_to_call, LPSTR name_space, - u32 const namespace_size, LPSTR function, u32 const function_size) +IC void CScriptEngine::parse_script_namespace(const char *name, char *ns, u32 nsSize, char *func, u32 funcSize) { - LPCSTR I = function_to_call, J = nullptr; - for (; ; J = I , ++I) + auto p = strrchr(name, '.'); + if (!p) { - I = strchr(I, '.'); - if (!I) - break; + xr_strcpy(ns, nsSize, GlobalNamespace); + p = name-1; } - xr_strcpy(name_space, namespace_size, GlobalNamespace); - if (!J) - xr_strcpy(function, function_size, function_to_call); else { - CopyMemory (name_space,function_to_call, u32(J - function_to_call)*sizeof(char)) ; - name_space[u32(J - function_to_call)] = 0; - xr_strcpy(function, function_size, J + 1); + VERIFY(u32(p-name+1)<=nsSize); + strncpy(ns, name, p-name); + ns[p-name] = 0; } + xr_strcpy(func, funcSize, p+1); } template