From 76d8369ad45671a8f087bdafa0cdbf6f524bef34 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Wed, 10 Jul 2024 18:21:33 +0200 Subject: [PATCH] Fix method reflection remapping with null parameter types passed Fixes #11052 --- ...flection-calls-in-plugins-using-internals.patch | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/patches/server/Remap-reflection-calls-in-plugins-using-internals.patch b/patches/server/Remap-reflection-calls-in-plugins-using-internals.patch index 5f6cdd0c28..5dcdab166a 100644 --- a/patches/server/Remap-reflection-calls-in-plugins-using-internals.patch +++ b/patches/server/Remap-reflection-calls-in-plugins-using-internals.patch @@ -395,7 +395,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + @Override -+ protected String mapDeclaredMethodName(final Class clazz, final String name, final Class... parameterTypes) { ++ protected String mapDeclaredMethodName(final Class clazz, final String name, final Class @Nullable ... parameterTypes) { + final @Nullable Map mapping = this.strippedMethodMappings.get(clazz.getName()); + if (mapping == null) { + return name; @@ -404,7 +404,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + @Override -+ protected String mapMethodName(final Class clazz, final String name, final Class... parameterTypes) { ++ protected String mapMethodName(final Class clazz, final String name, final Class @Nullable ... parameterTypes) { + final @Nullable String mapped = this.findMappedMethodName(clazz, name, parameterTypes); + return mapped != null ? mapped : name; + } @@ -424,7 +424,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return mapped != null ? mapped : name; + } + -+ private @Nullable String findMappedMethodName(final Class clazz, final String name, final Class... parameterTypes) { ++ private @Nullable String findMappedMethodName(final Class clazz, final String name, final Class @Nullable ... parameterTypes) { + final Map map = this.strippedMethodMappings.get(clazz.getName()); + @Nullable String mapped = null; + if (map != null) { @@ -474,11 +474,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return mapped; + } + -+ private static String strippedMethodKey(final String methodName, final Class... parameterTypes) { ++ private static String strippedMethodKey(final String methodName, final Class @Nullable ... parameterTypes) { + return methodName + parameterDescriptor(parameterTypes); + } + -+ private static String parameterDescriptor(final Class... parameterTypes) { ++ private static String parameterDescriptor(final Class @Nullable ... parameterTypes) { ++ if (parameterTypes == null) { ++ // Null parameterTypes is treated as an empty array ++ return "()"; ++ } + final StringBuilder builder = new StringBuilder(); + builder.append('('); + for (final Class parameterType : parameterTypes) {