diff --git a/src/java_bytecode/java_bytecode_convert_class.cpp b/src/java_bytecode/java_bytecode_convert_class.cpp index 0330794a8e7..53664271993 100644 --- a/src/java_bytecode/java_bytecode_convert_class.cpp +++ b/src/java_bytecode/java_bytecode_convert_class.cpp @@ -294,6 +294,8 @@ void java_bytecode_convert_classt::convert( component.set_access(ID_protected); else if(f.is_public) component.set_access(ID_public); + else + component.set_access(ID_default); } } diff --git a/src/java_bytecode/java_bytecode_convert_method.cpp b/src/java_bytecode/java_bytecode_convert_method.cpp index 695048ec421..fcb7ed841b8 100644 --- a/src/java_bytecode/java_bytecode_convert_method.cpp +++ b/src/java_bytecode/java_bytecode_convert_method.cpp @@ -232,6 +232,14 @@ void java_bytecode_convert_method_lazy( method_symbol.mode=ID_java; method_symbol.location=m.source_location; method_symbol.location.set_function(method_identifier); + if(m.is_public) + member_type.set(ID_access, ID_public); + else if(m.is_protected) + member_type.set(ID_access, ID_protected); + else if(m.is_private) + member_type.set(ID_access, ID_private); + else + member_type.set(ID_access, ID_default); if(method_symbol.base_name=="") { diff --git a/src/java_bytecode/java_bytecode_parser.cpp b/src/java_bytecode/java_bytecode_parser.cpp index 012a1c21dea..dd458860c97 100644 --- a/src/java_bytecode/java_bytecode_parser.cpp +++ b/src/java_bytecode/java_bytecode_parser.cpp @@ -709,6 +709,13 @@ void java_bytecode_parsert::rfields(classt &parsed_class) field.is_final=(access_flags&ACC_FINAL)!=0; field.is_enum=(access_flags&ACC_ENUM)!=0; field.signature=id2string(pool_entry(descriptor_index).s); + field.is_public=(access_flags&ACC_PUBLIC)!=0; + field.is_protected=(access_flags&ACC_PROTECTED)!=0; + field.is_private=(access_flags&ACC_PRIVATE)!=0; + size_t flags=(field.is_public?1:0)+ + (field.is_protected?1:0)+ + (field.is_private?1:0); + assert(flags<=1); for(std::size_t j=0; j