@@ -133,17 +133,18 @@ private static void addStaticFunctionHandles(
133133 map .put ("swap" , lookup .findStatic (Functions .class , "swap" ,
134134 methodType (double .class , Variable .class , Variable .class )
135135 ));
136- map .put ("gmegabuf" , lookup .findStatic (Functions .class , "gmegabuf" ,
137- methodType (double .class , double .class )
138- ));
139- map .put ("gmegabuf" , lookup .findStatic (Functions .class , "gmegabuf" ,
140- methodType (double .class , double .class , double .class )
141- ));
142- map .put ("gclosest" , lookup .findStatic (Functions .class , "gclosest" ,
143- methodType (double .class , double .class , double .class , double .class , double .class ,
144- double .class , double .class
145- )
146- ));
136+ // FAWE - disable global megabuffer methods
137+ // map.put("gmegabuf", lookup.findStatic(Functions.class, "gmegabuf",
138+ // methodType(double.class, double.class)
139+ // ));
140+ // map.put("gmegabuf", lookup.findStatic(Functions.class, "gmegabuf",
141+ // methodType(double.class, double.class, double.class)
142+ // ));
143+ // map.put("gclosest", lookup.findStatic(Functions.class, "gclosest",
144+ // methodType(double.class, double.class, double.class, double.class, double.class,
145+ // double.class, double.class
146+ // )
147+ // ));
147148 map .put ("random" , lookup .findStatic (Functions .class , "random" ,
148149 methodType (double .class )
149150 ));
@@ -263,6 +264,11 @@ public void setEnvironment(ExpressionEnvironment environment) {
263264 }
264265
265266 private static double [] getSubBuffer (Int2ObjectMap <double []> megabuf , int key ) {
267+ // avoid taking up more than 128 MiB (ignoring overhead)
268+ if (megabuf .size () > 16384 ) {
269+ megabuf .clear (); // make elements unreachable as soon as possible
270+ throw new ExpressionException (-1 , "memory limit reached" );
271+ }
266272 return megabuf .computeIfAbsent (key , k -> new double [1024 ]);
267273 }
268274
0 commit comments