1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
Description: Handle synthetic method parameters entries that don't have names
> If the value of the name_index item is zero, then this parameters element indicates a formal parameter with no name.
https://docs.oracle.com/javase/specs/jvms/se20/html/jvms-4.html#jvms-4.7.24
Author: Liam Miller-Cushon <cushon@google.com>
Origin: upstream,https://github.com/bazelbuild/bazel/commit/3954a18fa6b0e3d1a1005cc3409ebc95f6adf3af
Forwarded: not-needed
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1057490
Last-Update: 2024-01-05
--- a/third_party/ijar/classfile.cc
+++ b/third_party/ijar/classfile.cc
@@ -1168,7 +1168,8 @@
u1 parameters_count = get_u1(p);
for (int ii = 0; ii < parameters_count; ++ii) {
MethodParameter* parameter = new MethodParameter;
- parameter->name_ = constant(get_u2be(p));
+ int name_id = get_u2be(p);
+ parameter->name_ = name_id == 0 ? NULL : constant(name_id);
parameter->access_flags_ = get_u2be(p);
attr->parameters_.push_back(parameter);
}
@@ -1180,7 +1181,7 @@
u1 *payload_start = p - 4;
put_u1(p, parameters_.size());
for (MethodParameter* parameter : parameters_) {
- put_u2be(p, parameter->name_->slot());
+ put_u2be(p, parameter->name_ == NULL ? 0 : parameter->name_->slot());
put_u2be(p, parameter->access_flags_);
}
put_u4be(payload_start, p - 4 - payload_start); // backpatch length
|