Skip to content

Commit 15d7b71

Browse files
author
Matthias Güdemann
authored
Merge pull request #1908 from mgudemann/bugfix/fix_bootstrapmethods_empty_optional
[TG-2684] Bugfix/fix bootstrapmethods empty optional
2 parents fdba57c + 0fd6482 commit 15d7b71

File tree

5 files changed

+29
-3
lines changed

5 files changed

+29
-3
lines changed
4.37 KB
Binary file not shown.
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from https://github.com/symphonyoss/symphony-java-client/
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
SymStream.class
3+
--verbosity 10 --show-goto-functions
4+
lambda function reference org/symphonyoss/symphony/clients/model/SymUser\.toSymUser in class \"SymStream\"
5+
^EXIT=0
6+
^SIGNAL=0
7+
--
8+
--
9+
lambda functions without "lambda$" prefix aren't recognized currently TG-2691
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
SymStream.class
3+
--verbosity 10 --show-goto-functions
4+
^EXIT=0
5+
^SIGNAL=0
6+
--
7+
--
8+
just to test that it doesn't crash in this situation, cf. TG-2684

src/java_bytecode/java_bytecode_parser.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -1893,10 +1893,18 @@ void java_bytecode_parsert::read_bootstrapmethods_entry(classt &parsed_class)
18931893
optionalt<lambda_method_handlet> lambda_method_handle =
18941894
parse_method_handle(method_handle_infot{method_handle_argument});
18951895

1896-
if(
1897-
!lambda_method_handle.has_value() ||
1896+
if(!lambda_method_handle.has_value())
1897+
{
1898+
lambda_method_handlet lambda_method_handle;
1899+
lambda_method_handle.handle_type = method_handle_typet::UNKNOWN_HANDLE;
1900+
lambda_method_handle.u2_values = std::move(u2_values);
1901+
parsed_class.lambda_method_handle_map[{parsed_class.name, i}] =
1902+
lambda_method_handle;
1903+
return;
1904+
}
1905+
else if(
18981906
lambda_method_handle->handle_type !=
1899-
method_handle_typet::LAMBDA_METHOD_HANDLE)
1907+
method_handle_typet::LAMBDA_METHOD_HANDLE)
19001908
{
19011909
lambda_method_handle->u2_values = std::move(u2_values);
19021910
error() << "ERROR: could not parse lambda function method handle"

0 commit comments

Comments
 (0)