Skip to content

Commit dff48ec

Browse files
committed
Fix NPE with expr-%number% where the number is higher than the pattern allows
1 parent 75476f4 commit dff48ec

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/main/java/com/btk5h/skriptmirror/skript/custom/ExprExpression.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.btk5h.skriptmirror.skript.custom.expression.ExpressionGetEvent;
2121
import com.btk5h.skriptmirror.util.JavaUtil;
2222
import org.bukkit.event.Event;
23+
import org.eclipse.jdt.annotation.Nullable;
2324

2425
import java.util.Iterator;
2526

@@ -80,6 +81,7 @@ public T[] getAll(Event e) {
8081
return Converters.convertArray(expr.getAll(e), types, superType);
8182
}
8283

84+
@Nullable
8385
Expression<?> getExpression(Event e) {
8486
Expression<?>[] expressions = ((CustomSyntaxEvent) e).getExpressions();
8587
if (index < expressions.length) {
@@ -169,7 +171,6 @@ public String toString(Event e, boolean debug) {
169171
return "expression " + (index + 1);
170172
}
171173

172-
@SuppressWarnings("unchecked")
173174
@Override
174175
public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed,
175176
SkriptParser.ParseResult parseResult) {

src/main/java/com/btk5h/skriptmirror/skript/custom/ExprRawExpression.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ public class ExprRawExpression extends SimpleExpression<Expression> {
2323
protected Expression[] get(Event e) {
2424
Expression<?> expr = this.expr;
2525
if (expr instanceof ExprExpression && e instanceof CustomSyntaxEvent) {
26-
expr = ((ExprExpression) expr).getExpression(e).getSource();
26+
expr = ((ExprExpression) expr).getExpression(e);
27+
if (expr == null)
28+
return null;
29+
expr = expr.getSource();
2730
}
28-
return new Expression[]{expr};
31+
return new Expression[] {expr};
2932
}
3033

3134
@Override
@@ -48,10 +51,13 @@ public void change(Event event, Object[] delta, Changer.ChangeMode changeMode) {
4851
if (!(expr instanceof ExprExpression && event instanceof CustomSyntaxEvent))
4952
return;
5053

51-
Expression<?> expr = ((ExprExpression<?>) this.expr).getExpression(event).getSource();
54+
Expression<?> expr = ((ExprExpression<?>) this.expr).getExpression(event);
55+
if (expr == null)
56+
return;
57+
Expression<?> source = expr.getSource();
5258

5359
event = ((WrappedEvent) event).getEvent();
54-
expr.change(event, delta, changeMode);
60+
source.change(event, delta, changeMode);
5561
}
5662

5763
@Override

0 commit comments

Comments
 (0)