X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fjagi%2Ffs%2FCompiler.java;fp=src%2Fjagi%2Ffs%2FCompiler.java;h=b277e003274b42d08b415ff52222d30d54c61199;hb=54de0442296cdb195759d1f3ed56f77f77348bf0;hp=60a1c24e70b8c7a9112ed0327315dd83d8dd584d;hpb=9c4d8fd978f0d398f25b70b4f9016631a44a1777;p=jagi.git diff --git a/src/jagi/fs/Compiler.java b/src/jagi/fs/Compiler.java index 60a1c24..b277e00 100644 --- a/src/jagi/fs/Compiler.java +++ b/src/jagi/fs/Compiler.java @@ -3,12 +3,14 @@ package jagi.fs; import jagi.*; import java.util.*; import java.util.regex.*; +import java.util.logging.*; import java.nio.file.*; import java.nio.file.attribute.*; import java.io.*; import java.net.*; public class Compiler { + private static final Logger log = Logger.getLogger("jagi-fs"); private final Map files = new HashMap<>(); private final Map libs = new HashMap<>(); private final Collection searchpath = new ArrayList<>(); @@ -323,8 +325,16 @@ public class Compiler { synchronized(this) { FileTime mtime = Files.getLastModifiedTime(name); if((this.mtime == null) || (this.mtime.compareTo(mtime) < 0)) { - mod = new Module(name); + Module pmod = this.mod; + this.mod = new Module(name); this.mtime = mtime; + if(pmod instanceof AutoCloseable) { + try { + ((AutoCloseable)pmod).close(); + } catch(Exception e) { + log.log(Level.WARNING, String.format("Error when disposing updated module %s", pmod.file), e); + } + } } } }