Skip to content

Commit

Permalink
Merge pull request #2016 from tonykwok1992/bug-fix-binary-codegen
Browse files Browse the repository at this point in the history
Bug fix for large binary with unlink libraries codegen
  • Loading branch information
gtebrean authored Mar 21, 2024
2 parents ddf8e87 + e86ee2e commit c6afb76
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ private FieldSpec createLibrariesLinkedBinaryField() {
.build();
}

private FieldSpec createBinaryDefinition(String binary) {
FieldSpec createBinaryDefinition(String binary) {
if (binary.length() < 65534) {
return FieldSpec.builder(String.class, BINARY)
.addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
Expand All @@ -407,7 +407,8 @@ private FieldSpec createBinaryDefinition(String binary) {
StringBuilder stringBuilderString = new StringBuilder().append("new StringBuilder()");
for (String s : argsArray) {
stringBuilderString.append(".append(\"");
stringBuilderString.append(s);
stringBuilderString.append(
s.replaceAll("\\$", "\\$\\$")); // escape $ which bytecode may contain
stringBuilderString.append("\")");
}
stringBuilderString.append(".toString()");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -983,4 +983,13 @@ public void testBuildFunctionLinkBinaryWithReferences() throws Exception {

assertEquals(methodSpec.toString(), (expected));
}

@Test
public void testBinaryWithUnlinkedLibraryLengthOver65534() throws Exception {
solidityFunctionWrapper.createBinaryDefinition(
"0x"
+ "a".repeat(40000)
+ "__$927c5a12e2f339676f56d42ec1c0537964$__"
+ "a".repeat(40000));
}
}

0 comments on commit c6afb76

Please sign in to comment.