aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-03-17 20:08:12 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-04-21 02:38:00 +0800
commit418759ece046798d9c1707bb9992aa43ba194303 (patch)
tree8316f7ccc2a8fe68ab48559c7e57ae05500814ef
parent4f3c76364c5f76c42f28fcaeb28f57946545a61a (diff)
downloaddexon-solidity-418759ece046798d9c1707bb9992aa43ba194303.tar.gz
dexon-solidity-418759ece046798d9c1707bb9992aa43ba194303.tar.zst
dexon-solidity-418759ece046798d9c1707bb9992aa43ba194303.zip
Catch exceptions of StandardCompiler
-rw-r--r--libsolidity/interface/StandardCompiler.cpp14
-rw-r--r--libsolidity/interface/StandardCompiler.h2
2 files changed, 15 insertions, 1 deletions
diff --git a/libsolidity/interface/StandardCompiler.cpp b/libsolidity/interface/StandardCompiler.cpp
index acc5642b..7f3b7a58 100644
--- a/libsolidity/interface/StandardCompiler.cpp
+++ b/libsolidity/interface/StandardCompiler.cpp
@@ -29,7 +29,7 @@ using namespace std;
using namespace dev;
using namespace dev::solidity;
-Json::Value StandardCompiler::compile(Json::Value const& _input)
+Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
{
m_compilerStack.reset(false);
@@ -139,6 +139,18 @@ Json::Value StandardCompiler::compile(Json::Value const& _input)
return output;
}
+Json::Value StandardCompiler::compile(Json::Value const& _input)
+{
+ try
+ {
+ return compileInternal(_input);
+ }
+ catch (...)
+ {
+ return "{\"errors\":\"[{\"type\":\"InternalCompilerError\",\"component\":\"general\",\"severity\":\"error\",\"message\":\"Internal exception in StandardCompiler::compilerInternal\"}]}";
+ }
+}
+
string StandardCompiler::compile(string const& _input)
{
Json::Value input;
diff --git a/libsolidity/interface/StandardCompiler.h b/libsolidity/interface/StandardCompiler.h
index c47e3c88..12d85aad 100644
--- a/libsolidity/interface/StandardCompiler.h
+++ b/libsolidity/interface/StandardCompiler.h
@@ -52,6 +52,8 @@ public:
std::string compile(std::string const& _input);
private:
+ Json::Value compileInternal(Json::Value const& _input);
+
CompilerStack m_compilerStack;
};