Skip to content

Commit

Permalink
Mark libsolc external C functions as noexcept
Browse files Browse the repository at this point in the history
These are part of the external C API where leaking through exceptions makes no sense.
  • Loading branch information
axic committed Aug 8, 2018
1 parent 5b4ad10 commit 7bf9526
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 18 deletions.
18 changes: 9 additions & 9 deletions libsolc/libsolc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -270,46 +270,46 @@ static string s_outputBuffer;

extern "C"
{
extern char const* license()
extern char const* license() noexcept
{
static string fullLicenseText = otherLicenses + licenseText;
return fullLicenseText.c_str();
}
extern char const* version()
extern char const* version() noexcept
{
return VersionString.c_str();
}
extern char const* compileJSON(char const* _input, bool _optimize)
extern char const* compileJSON(char const* _input, bool _optimize) noexcept
{
s_outputBuffer = compileSingle(_input, _optimize);
return s_outputBuffer.c_str();
}
extern char const* compileJSONMulti(char const* _input, bool _optimize)
extern char const* compileJSONMulti(char const* _input, bool _optimize) noexcept
{
s_outputBuffer = compileMulti(_input, _optimize);
return s_outputBuffer.c_str();
}
extern char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback)
extern char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) noexcept
{
s_outputBuffer = compileMulti(_input, _optimize, _readCallback);
return s_outputBuffer.c_str();
}
extern char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback)
extern char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) noexcept
{
s_outputBuffer = compileStandardInternal(_input, _readCallback);
return s_outputBuffer.c_str();
}
extern char const* solidity_license()
extern char const* solidity_license() noexcept
{
/// todo: make this the default or an alias
return license();
}
extern char const* solidity_version()
extern char const* solidity_version() noexcept
{
/// todo: make this the default or an alias
return version();
}
extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback)
extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) noexcept
{
/// todo: make this the default or an alias
return compileStandard(_input, _readCallback);
Expand Down
24 changes: 15 additions & 9 deletions libsolc/libsolc.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@

#include <stdbool.h>

#ifdef __cplusplus
#define SOLC_NOEXCEPT noexcept
#else
#define SOLC_NOEXCEPT
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand All @@ -30,16 +36,16 @@ extern "C" {
/// heap-allocated and are free'd by the caller.
typedef void (*CStyleReadFileCallback)(char const* _path, char** o_contents, char** o_error);

char const* license();
char const* version();
char const* compileJSON(char const* _input, bool _optimize);
char const* compileJSONMulti(char const* _input, bool _optimize);
char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback);
char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback);
char const* license() SOLC_NOEXCEPT;
char const* version() SOLC_NOEXCEPT;
char const* compileJSON(char const* _input, bool _optimize) SOLC_NOEXCEPT;
char const* compileJSONMulti(char const* _input, bool _optimize) SOLC_NOEXCEPT;
char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT;
char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT;

char const* solidity_license();
char const* solidity_version();
char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback);
char const* solidity_license() SOLC_NOEXCEPT;
char const* solidity_version() SOLC_NOEXCEPT;
char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT;

#ifdef __cplusplus
}
Expand Down

0 comments on commit 7bf9526

Please sign in to comment.