From b9f4f31a1ebb8197bef31e44d876d6fc82cdaf78 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 1 Aug 2026 11:37:50 +0100 Subject: Check shared value ID is in range --- .../output/generators/javatransient0/JavaTransient0Generator.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java index b12f8d5..92d36e3 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java @@ -1105,6 +1105,10 @@ public class JavaTransient0Generator implements Generator { return Lists.concat(List.of( generateDecode(id, NativeTypes.INT_64), List.of( + generateAssertLessThanIntMax( + id, + "Shared value IDs greater than Integer.MAX_VALUE are not supported" + ), new JavaLocalVariableDeclaration( Optional.of(this.javaGenerator.generateTypeRef(type)), target, @@ -1129,6 +1133,10 @@ public class JavaTransient0Generator implements Generator { new JavaMethodCall( new JavaRef(SHARED_VALUES_NAME), JavaIdentifier.of("get"), + // We've checked above that the id is less than + // Integer.MAX_VALUE, so casting to an int is safe. + // (This doesn't check for negatives, but get() fails for + // negative values anyway.) List.of(new JavaCast(JavaTypeRef.INT, new JavaRef(id))) ) ) -- cgit v1.2.3