From 34e5942bf0e7981226d5c280d85ee4ab17a17503 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 8 Jun 2020 12:22:40 -0400 Subject: [PATCH] Fix timings task name generation for extreme cases - Fixes #3499 I'm going make a class, and in that class i'm going to make a method. And in that method, I'm going to make a local class. And then in that local class, I'm going to make another inner class. I heard you like complex class trees. --- Spigot-Server-Patches/0009-Timings-v2.patch | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Spigot-Server-Patches/0009-Timings-v2.patch b/Spigot-Server-Patches/0009-Timings-v2.patch index dd12ff299c..3e06a6ec27 100644 --- a/Spigot-Server-Patches/0009-Timings-v2.patch +++ b/Spigot-Server-Patches/0009-Timings-v2.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Timings v2 diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java new file mode 100644 -index 0000000000000000000000000000000000000000..33342139a042ebec5fb4e8566028f8f7e3149937 +index 0000000000000000000000000000000000000000..11c5f8e033689f483a64486d2f8c206ca26ff9da --- /dev/null +++ b/src/main/java/co/aikar/timings/MinecraftTimings.java @@ -0,0 +1,145 @@ @@ -81,13 +81,13 @@ index 0000000000000000000000000000000000000000..33342139a042ebec5fb4e8566028f8f7 + + final String taskname = taskNameCache.computeIfAbsent(taskClass, clazz -> { + try { -+ String clsName = clazz.isAnonymousClass() || clazz.isLocalClass() ++ String clsName = !clazz.isMemberClass() + ? clazz.getName() + : clazz.getCanonicalName(); -+ if (clsName.contains("$Lambda$")) { ++ if (clsName != null && clsName.contains("$Lambda$")) { + clsName = clsName.replaceAll("(Lambda\\$.*?)/.*", "$1"); + } -+ return clsName; ++ return clsName != null ? clsName : "UnknownTask"; + } catch (Throwable ex) { + new Exception("Error occurred detecting class name", ex).printStackTrace(); + return "MangledClassFile";