aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-04-21 01:44:07 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-04-21 02:20:14 +0800
commitbf074f3f4174f31524d25da816cb4121a21da20c (patch)
tree90ef7c763532016b288e4b357a3d533440878e0a
parent6468955fb1337f0f3d8eb4f35004d78179b8d7b8 (diff)
downloaddexon-solidity-bf074f3f4174f31524d25da816cb4121a21da20c.tar.gz
dexon-solidity-bf074f3f4174f31524d25da816cb4121a21da20c.tar.zst
dexon-solidity-bf074f3f4174f31524d25da816cb4121a21da20c.zip
Fix source index allocation in CompilerStack. Depending on compiler(optimisations) this could be off-by-one.
-rw-r--r--Changelog.md5
-rw-r--r--libsolidity/interface/CompilerStack.cpp3
2 files changed, 6 insertions, 2 deletions
diff --git a/Changelog.md b/Changelog.md
index cd985917..dd62f2df 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -6,8 +6,11 @@ Features:
path(s) of the supplied source file(s) is always trusted.
Bugfixes:
- * Type system: Contract inheriting from base with unimplemented constructor should be abstract.
* Assembly output: Implement missing AssemblyItem types.
+ * Compiler interface: Fix a bug where source indexes could be inconsistent between Solidity compiled
+ with different compilers (clang vs. gcc) or compiler settings. The bug was visible in AST
+ and source mappings.
+ * Type system: Contract inheriting from base with unimplemented constructor should be abstract.
### 0.4.10 (2017-03-15)
diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp
index 92b49cda..6ea9ea78 100644
--- a/libsolidity/interface/CompilerStack.cpp
+++ b/libsolidity/interface/CompilerStack.cpp
@@ -406,8 +406,9 @@ vector<string> CompilerStack::sourceNames() const
map<string, unsigned> CompilerStack::sourceIndices() const
{
map<string, unsigned> indices;
+ unsigned index = 0;
for (auto const& s: m_sources)
- indices[s.first] = indices.size();
+ indices[s.first] = index++;
return indices;
}