From a08fa3be5d9418e36eb49150cb4e8731046ac49e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 6 Aug 2014 13:22:09 +0200 Subject: [PATCH] Fixed tmp file system's usage counter not being properly reset when closed and not being recomputed on load, closes #471. --- src/main/scala/li/cil/oc/server/fs/Capacity.scala | 13 +++++++++++-- src/main/scala/li/cil/oc/server/fs/FileSystem.scala | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/fs/Capacity.scala b/src/main/scala/li/cil/oc/server/fs/Capacity.scala index d29c8068b..257e6bf02 100644 --- a/src/main/scala/li/cil/oc/server/fs/Capacity.scala +++ b/src/main/scala/li/cil/oc/server/fs/Capacity.scala @@ -26,7 +26,7 @@ trait Capacity extends OutputStreamFileSystem { override def delete(path: String) = { val freed = Settings.get.fileCost + size(path) if (super.delete(path)) { - used -= freed + used = math.max(0, used - freed) true } else false @@ -45,6 +45,13 @@ trait Capacity extends OutputStreamFileSystem { // ----------------------------------------------------------------------- // + override def close() { + super.close() + used = computeSize("/") + } + + // ----------------------------------------------------------------------- // + override def load(nbt: NBTTagCompound) { try { ignoreCapacity = true @@ -52,6 +59,8 @@ trait Capacity extends OutputStreamFileSystem { } finally { ignoreCapacity = false } + + used = computeSize("/") } override def save(nbt: NBTTagCompound) { @@ -78,7 +87,7 @@ trait Capacity extends OutputStreamFileSystem { super.openOutputHandle(id, path, mode) match { case None => None case Some(stream) => - used += delta + used = math.max(0, used + delta) if (mode == Mode.Append) { stream.seek(stream.length()) } diff --git a/src/main/scala/li/cil/oc/server/fs/FileSystem.scala b/src/main/scala/li/cil/oc/server/fs/FileSystem.scala index 1f310fc2a..6cb895121 100644 --- a/src/main/scala/li/cil/oc/server/fs/FileSystem.scala +++ b/src/main/scala/li/cil/oc/server/fs/FileSystem.scala @@ -148,8 +148,8 @@ object FileSystem extends api.detail.FileSystemAPI { private class RamFileSystem(protected val capacity: Long) extends VirtualFileSystem - with Capacity with Volatile + with Capacity private class BufferedFileSystem(protected val fileRoot: io.File, protected val capacity: Long) extends VirtualFileSystem