Package: bazel-bootstrap / 4.2.3+ds-11

handle_synthetic_method_parameters_entries_that_dont_have_names.patch Patch series | download
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