mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-01-31 09:57:14 +01:00
Prevent silent failure uppon loading scripts that don't exist.
This commit is contained in:
parent
88ef01e5e8
commit
1edc1930a3
@ -27,7 +27,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (!mFile)
|
if (!mFile)
|
||||||
{
|
{
|
||||||
throw std::runtime_error(ToStrF("Unable to open script source (%s)", path));
|
STHROWF("Unable to open script source (%s)", path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,9 +151,9 @@ void ScriptSrc::Process()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
ScriptSrc::ScriptSrc(HSQUIRRELVM vm, String && path, bool delay, bool info)
|
ScriptSrc::ScriptSrc(HSQUIRRELVM vm, const String & path, bool delay, bool info)
|
||||||
: mExec(vm)
|
: mExec(vm)
|
||||||
, mPath(std::move(path))
|
, mPath(path)
|
||||||
, mData()
|
, mData()
|
||||||
, mLine()
|
, mLine()
|
||||||
, mInfo(info)
|
, mInfo(info)
|
||||||
|
@ -39,16 +39,7 @@ public:
|
|||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Base constructor.
|
* Base constructor.
|
||||||
*/
|
*/
|
||||||
ScriptSrc(HSQUIRRELVM vm, const String & path, bool delay = false, bool info = false)
|
ScriptSrc(HSQUIRRELVM vm, const String & path, bool delay = false, bool info = false);
|
||||||
: ScriptSrc(vm, String(path), delay, info)
|
|
||||||
{
|
|
||||||
/* ... */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
|
||||||
* Base constructor.
|
|
||||||
*/
|
|
||||||
ScriptSrc(HSQUIRRELVM vm, String && path, bool delay = false, bool info = false);
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Copy constructor.
|
* Copy constructor.
|
||||||
|
@ -675,23 +675,23 @@ bool Core::LoadScript(CSStr filepath, bool delay)
|
|||||||
else if (m_Executed)
|
else if (m_Executed)
|
||||||
{
|
{
|
||||||
// Create a new script container and insert it into the script pool
|
// Create a new script container and insert it into the script pool
|
||||||
m_Scripts.emplace_back(m_VM, std::move(path), delay, m_Debugging);
|
m_Scripts.emplace_back(m_VM, path, delay, m_Debugging);
|
||||||
|
|
||||||
// Attempt to load and compile the script file
|
// Attempt to load and compile the script file
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_Scripts.back().mExec.CompileFile(m_Scripts.back().mPath);
|
m_Scripts.back().mExec.CompileFile(path);
|
||||||
}
|
}
|
||||||
catch (const Sqrat::Exception & e)
|
catch (const Sqrat::Exception & e)
|
||||||
{
|
{
|
||||||
LogFtl("Unable to compile: %s", m_Scripts.back().mPath.c_str());
|
LogFtl("Unable to compile: %s", path.c_str());
|
||||||
// Remove the script container since it's invalid
|
// Remove the script container since it's invalid
|
||||||
m_Scripts.pop_back();
|
m_Scripts.pop_back();
|
||||||
// Failed to compile properly
|
// Failed to compile properly
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// At this point the script should be completely loaded
|
// At this point the script should be completely loaded
|
||||||
cLogDbg(m_Verbosity >= 3, "Compiled script: %s", m_Scripts.back().mPath.c_str());
|
cLogDbg(m_Verbosity >= 3, "Compiled script: %s", path.c_str());
|
||||||
|
|
||||||
// Attempt to execute the compiled script code
|
// Attempt to execute the compiled script code
|
||||||
try
|
try
|
||||||
@ -700,22 +700,31 @@ bool Core::LoadScript(CSStr filepath, bool delay)
|
|||||||
}
|
}
|
||||||
catch (const Sqrat::Exception & e)
|
catch (const Sqrat::Exception & e)
|
||||||
{
|
{
|
||||||
LogFtl("Unable to execute: %s", m_Scripts.back().mPath.c_str());
|
LogFtl("Unable to execute: %s", path.c_str());
|
||||||
// Remove the script container since it's invalid
|
// Remove the script container since it's invalid
|
||||||
m_Scripts.pop_back();
|
m_Scripts.pop_back();
|
||||||
// Failed to execute properly
|
// Failed to execute properly
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// At this point the script should be completely loaded
|
// At this point the script should be completely loaded
|
||||||
cLogScs(m_Verbosity >= 2, "Executed script: %s", m_Scripts.back().mPath.c_str());
|
cLogScs(m_Verbosity >= 2, "Executed script: %s", path.c_str());
|
||||||
}
|
}
|
||||||
// We don't compile the scripts yet. We just store their path and prepare the objects
|
// We don't compile the scripts yet. We just store their path and prepare the objects
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cLogDbg(m_Verbosity >= 2, "Pending %s script: %s", (delay ? "deferred" : "immediate"), path.c_str());
|
cLogDbg(m_Verbosity >= 2, "Pending %s script: %s", (delay ? "deferred" : "immediate"), path.c_str());
|
||||||
|
// Attempt to queue the script
|
||||||
// Create a new script container and insert it into the pending script pool
|
try
|
||||||
m_PendingScripts.emplace_back(m_VM, std::move(path), delay, m_Debugging);
|
{
|
||||||
|
// Create a new script container and insert it into the pending script pool
|
||||||
|
m_PendingScripts.emplace_back(m_VM, path, delay, m_Debugging);
|
||||||
|
}
|
||||||
|
catch (const Sqrat::Exception & e)
|
||||||
|
{
|
||||||
|
LogFtl("Unable to queue: %s", e.what());
|
||||||
|
// Failed to queue script
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// At this point the script exists in one of the pools
|
// At this point the script exists in one of the pools
|
||||||
|
Loading…
x
Reference in New Issue
Block a user