aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2017-03-14 18:58:43 +0800
committerchriseth <c@ethdev.com>2017-03-14 18:58:43 +0800
commit14196f2621cbc3a7580ae05b6f7508c92467168a (patch)
tree98701ae328792d01c8b86aeb89a1df035f995c0f
parent9aab3b8639afa6e30e866e052a412b6f39c6ef6c (diff)
downloaddexon-solidity-14196f2621cbc3a7580ae05b6f7508c92467168a.tar.gz
dexon-solidity-14196f2621cbc3a7580ae05b6f7508c92467168a.tar.zst
dexon-solidity-14196f2621cbc3a7580ae05b6f7508c92467168a.zip
Allow long library names.
-rw-r--r--Changelog.md1
-rw-r--r--solc/CommandLineInterface.cpp11
-rwxr-xr-xtest/cmdlineTests.sh3
3 files changed, 14 insertions, 1 deletions
diff --git a/Changelog.md b/Changelog.md
index 8e9780c0..577487a2 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -12,6 +12,7 @@ Features:
Bugfixes:
* Commandline interface: Always escape filenames (replace ``/``, ``:`` and ``.`` with ``_``).
* Commandline interface: Do not try creating paths ``.`` and ``..``.
+ * Commandline interface: Allow long library names.
* Parser: Disallow octal literals.
* Type system: Fix a crash caused by continuing on fatal errors in the code.
* Type system: Disallow compound assignment for tuples.
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp
index 0c777c77..31f70272 100644
--- a/solc/CommandLineInterface.cpp
+++ b/solc/CommandLineInterface.cpp
@@ -420,7 +420,16 @@ void CommandLineInterface::readInputFilesAndConfigureRemappings()
bool CommandLineInterface::parseLibraryOption(string const& _input)
{
namespace fs = boost::filesystem;
- string data = fs::is_regular_file(_input) ? contentsString(_input) : _input;
+ string data = _input;
+ try
+ {
+ if (fs::is_regular_file(_input))
+ data = contentsString(_input);
+ }
+ catch (fs::filesystem_error const&)
+ {
+ // Thrown e.g. if path is too long.
+ }
vector<string> libraries;
boost::split(libraries, data, boost::is_space() || boost::is_any_of(","), boost::token_compress_on);
diff --git a/test/cmdlineTests.sh b/test/cmdlineTests.sh
index fc04bd7d..e2ee6a5e 100755
--- a/test/cmdlineTests.sh
+++ b/test/cmdlineTests.sh
@@ -50,6 +50,9 @@ echo "Testing library checksum..."
echo '' | "$SOLC" --link --libraries a:0x90f20564390eAe531E810af625A22f51385Cd222
! echo '' | "$SOLC" --link --libraries a:0x80f20564390eAe531E810af625A22f51385Cd222 2>/dev/null
+echo "Testing long library names..."
+echo '' | "$SOLC" --link --libraries aveeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeerylonglibraryname:0x90f20564390eAe531E810af625A22f51385Cd222
+
echo "Testing overwriting files"
TMPDIR=$(mktemp -d)
(