diff --git a/prism/src/prism/PrismFileLog.java b/prism/src/prism/PrismFileLog.java index 88716299..3a7a8489 100644 --- a/prism/src/prism/PrismFileLog.java +++ b/prism/src/prism/PrismFileLog.java @@ -132,13 +132,23 @@ public class PrismFileLog extends PrismLog @Override public void flush() { + if (fp == 0) { + throw new IllegalStateException("Trying to flush an invalid file handle (already closed?)"); + } PrismNative.PN_FlushFile(fp); } @Override public void close() { + if (fp == 0) { + // already closed, ignore (as specified by Closable contract) + return; + } + if (!stdout) PrismNative.PN_CloseFile(fp); + // set fp to zero to indicate that the file handle is not valid anymore + fp = 0; } @Override @@ -200,6 +210,10 @@ public class PrismFileLog extends PrismLog */ private void printToLog(String s) { + if (fp == 0) { + throw new IllegalStateException("Trying to write to an invalid file handle (already closed?)"); + } + PrismNative.PN_PrintToFile(fp, s); } } diff --git a/prism/src/prism/PrismLog.java b/prism/src/prism/PrismLog.java index 57d81dac..979e9655 100644 --- a/prism/src/prism/PrismLog.java +++ b/prism/src/prism/PrismLog.java @@ -92,6 +92,7 @@ public abstract class PrismLog implements Closeable, AutoCloseable public abstract void flush(); + @Override public abstract void close(); public abstract void print(boolean b);