diff --git a/drjava/src/edu/rice/cs/drjava/RemoteControlServer.java b/drjava/src/edu/rice/cs/drjava/RemoteControlServer.java index e66b30f90..ad1419884 100644 --- a/drjava/src/edu/rice/cs/drjava/RemoteControlServer.java +++ b/drjava/src/edu/rice/cs/drjava/RemoteControlServer.java @@ -160,7 +160,10 @@ public void run() { } } - protected void finalize() { if (socket != null) socket.close(); } + protected void finalize() { + if (socket != null) socket.close(); + super.finalize(); + } } /** Main method for test purposes. diff --git a/drjava/src/edu/rice/cs/drjava/model/definitions/DefinitionsDocument.java b/drjava/src/edu/rice/cs/drjava/model/definitions/DefinitionsDocument.java index dcd838409..74700d404 100644 --- a/drjava/src/edu/rice/cs/drjava/model/definitions/DefinitionsDocument.java +++ b/drjava/src/edu/rice/cs/drjava/model/definitions/DefinitionsDocument.java @@ -1446,6 +1446,7 @@ protected void finalize() { fl.finalized(fe); } } + super.finalize(); } public String toString() { return "ddoc for " + _odd; } diff --git a/drjava/src/edu/rice/cs/util/LogTest.java b/drjava/src/edu/rice/cs/util/LogTest.java index efd62060d..68c836069 100644 --- a/drjava/src/edu/rice/cs/util/LogTest.java +++ b/drjava/src/edu/rice/cs/util/LogTest.java @@ -33,7 +33,7 @@ import java.io.IOException; import java.io.File; import java.util.Date; -import java.util.Random; +import java.security.SecureRandom; import edu.rice.cs.drjava.model.MultiThreadedTestCase; import edu.rice.cs.plt.io.IOUtil; @@ -228,7 +228,7 @@ public void testConcurrentWrites() throws IOException, InterruptedException { Date earlier = new Date(); Log log3 = new Log(file3, true); - Random r = new Random(); + SecureRandom r = new SecureRandom(); Thread[] threads = new Thread[NUM_THREADS]; for (int i = 0; i < NUM_THREADS; i++) threads[i] = new LogTestThread(log3, r.nextInt(DELAY)); for (int i = 0; i < NUM_THREADS; i++) threads[i].start(); diff --git a/dynamicjava/src/edu/rice/cs/dynamicjava/interpreter/ExpressionEvaluator.java b/dynamicjava/src/edu/rice/cs/dynamicjava/interpreter/ExpressionEvaluator.java index 5aab3b416..8fba32ad3 100644 --- a/dynamicjava/src/edu/rice/cs/dynamicjava/interpreter/ExpressionEvaluator.java +++ b/dynamicjava/src/edu/rice/cs/dynamicjava/interpreter/ExpressionEvaluator.java @@ -744,17 +744,17 @@ public Object value(Object left, Object right) { }; public static final Lambda2 DIVIDE = new MatchingPrimitiveBinaryOperation() { - @Override public Object value(int l, int r) { return l / r; } - @Override public Object value(long l, long r) { return l / r; } - @Override public Object value(float l, float r) { return l / r; } - @Override public Object value(double l, double r) { return l / r; } + @Override public Object value(int l, int r) { return ((r != 0) ? (l / r) : 0); } + @Override public Object value(long l, long r) { return ((r != 0) ? (l / r) : 0); } + @Override public Object value(float l, float r) { return ((r != 0) ? (l / r) : 0); } + @Override public Object value(double l, double r) { return ((r != 0) ? (l / r) : 0); } }; public static final Lambda2 REMAINDER = new MatchingPrimitiveBinaryOperation() { - @Override public Object value(int l, int r) { return l % r; } - @Override public Object value(long l, long r) { return l % r; } - @Override public Object value(float l, float r) { return l % r; } - @Override public Object value(double l, double r) { return l % r; } + @Override public Object value(int l, int r) { return ((r != 0) ? (l % r) : 0); } + @Override public Object value(long l, long r) { return ((r != 0) ? (l % r) : 0); } + @Override public Object value(float l, float r) { return ((r != 0) ? (l % r) : 0); } + @Override public Object value(double l, double r) { return ((r != 0) ? (l % r) : 0); } }; public static final Lambda2 LESS = new MatchingPrimitiveBinaryOperation() {