From 7366fda6b17223b96b2f06fb3ebd9ebd2dc08708 Mon Sep 17 00:00:00 2001 From: svorenova Date: Wed, 28 Mar 2018 11:39:57 +0100 Subject: [PATCH] Format class name for lambda method handles --- src/java_bytecode/java_bytecode_parser.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/java_bytecode/java_bytecode_parser.cpp b/src/java_bytecode/java_bytecode_parser.cpp index 46ab444d380..1a0a4d26627 100644 --- a/src/java_bytecode/java_bytecode_parser.cpp +++ b/src/java_bytecode/java_bytecode_parser.cpp @@ -1777,9 +1777,13 @@ java_bytecode_parsert::parse_method_handle(const method_handle_infot &entry) const name_and_type_infot &name_and_type = ref_entry.get_name_and_type(pool_entry_lambda); + std::string class_name = class_entry.get_name(pool_entry_lambda); + // replace '.' for '$' (inner classes) + std::replace(class_name.begin(), class_name.end(), '.', '$'); + // replace '/' for '.' (package) + std::replace(class_name.begin(), class_name.end(), '/', '.'); const std::string method_ref = - class_entry.get_name(pool_entry_lambda) + "." + - name_and_type.get_name(pool_entry_lambda) + ':' + + class_name + "." + name_and_type.get_name(pool_entry_lambda) + ':' + name_and_type.get_descriptor(pool_entry_lambda); lambda_method_handlet lambda_method_handle;