From 89525c4c389be79c8c92ba816e9dc55368fde7c0 Mon Sep 17 00:00:00 2001 From: Moderocky Date: Fri, 10 May 2024 15:44:17 +0100 Subject: [PATCH] Use copy array whenever data could be modified. --- .../ch/njol/skript/lang/util/SimpleLiteral.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/ch/njol/skript/lang/util/SimpleLiteral.java b/src/main/java/ch/njol/skript/lang/util/SimpleLiteral.java index 3cab2276046..030db308993 100644 --- a/src/main/java/ch/njol/skript/lang/util/SimpleLiteral.java +++ b/src/main/java/ch/njol/skript/lang/util/SimpleLiteral.java @@ -38,6 +38,7 @@ import org.skriptlang.skript.lang.converter.Converters; import java.lang.reflect.Array; +import java.util.Arrays; /** * Represents a literal, i.e. a static value like a number or a string. @@ -95,24 +96,28 @@ public boolean init() { return true; } + private T[] data() { + return Arrays.copyOf(data, data.length); + } + @Override public T[] getArray() { - return data; + return this.data(); } @Override public T[] getArray(Event event) { - return data; + return this.data(); } @Override public T[] getAll() { - return data; + return this.data(); } @Override public T[] getAll(Event event) { - return data; + return this.data(); } @Override @@ -136,7 +141,7 @@ public Class getReturnType() { public Literal getConvertedExpression(Class... to) { if (CollectionUtils.containsSuperclass(to, type)) return (Literal) this; - R[] parsedData = Converters.convert(data, to, (Class) Utils.getSuperType(to)); + R[] parsedData = Converters.convert(this.data(), to, (Class) Utils.getSuperType(to)); if (parsedData.length != data.length) return null; return new ConvertedLiteral<>(this, parsedData, (Class) Utils.getSuperType(to));