diff --git a/exec/load/sauce_lib.js b/exec/load/sauce_lib.js
index b01115d8f182d08fdfcbcf2a400ab8105c2a455c..c9c6b8d0379dd2ae502d0e65ee58f3d5a568e672 100644
--- a/exec/load/sauce_lib.js
+++ b/exec/load/sauce_lib.js
@@ -60,12 +60,18 @@ function read(fname)
 			return false;
 	}
 
-	if(file.length < defs.trailer_length)
+	if(file.length < defs.trailer_length) {
+		if(typeof fname != 'object')
+			file.close();
 		return false;
+	}
 
 	file.position = file.length - defs.trailer_length;
-	if(file.read(defs.id_length + defs.version_length) != 'SAUCE00')
+	if(file.read(defs.id_length + defs.version_length) != 'SAUCE00') {
+		if(typeof fname != 'object')
+			file.close();
 		return false;
+	}
 
 	var obj = {};
 	obj.title = truncsp(file.read(35));
@@ -119,6 +125,8 @@ function read(fname)
 			}
 		}
 	}
+	if(typeof fname != 'object')
+		file.close();
 	return obj;
 }
 
@@ -177,6 +185,8 @@ function write(fname, obj)
 	file.writeBin(obj.comment.length, 1);
 	file.writeBin(obj.tflags, 1);
 	file.write(valueof(obj.tinfos), 22);
+	if(typeof fname != 'object')
+		file.close();
 	return true;
 }
 
@@ -194,7 +204,10 @@ function remove(fname)
 	}
 
 	var obj = this.read(file);
-	return file.truncate(obj.filesize);
+	var result = file.truncate(obj.filesize);
+	if(typeof fname != 'object')
+		file.close();
+	return result;
 }
 
 this;