From 6c01ed238a5e54aa8fed15354f15a5b6a9e51c5d Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Thu, 2 Jul 2009 17:54:17 +0000 Subject: [PATCH] Cache was not threadsafe --- .../rocketry/motorsim/grain/util/BurningShape.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java b/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java index 6bcd15d..af05a5c 100644 --- a/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java +++ b/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java @@ -170,10 +170,11 @@ public class BurningShape { private Area lastArea = null; public java.awt.geom.Area getShape(Amount regression) { - if ( regression.equals(lastRegression) ){ - return lastArea; + synchronized(this){ + if ( regression.equals(lastRegression) ){ + return lastArea; + } } - lastRegression = regression; java.awt.geom.Area a = new java.awt.geom.Area(); for (ShapeAndTrans st : plus){ @@ -195,7 +196,11 @@ public class BurningShape { a.subtract(new java.awt.geom.Area(s)); } - return lastArea = a; + synchronized(this){ + lastRegression = regression; + lastArea = a; + } + return a; } private Shape regress(Shape s, double mm, boolean plus) { -- 2.47.2