diff src/luan/lib/PickleCon.java @ 146:0517a4a7fcc5

add Io.reverse_pickle git-svn-id: https://luan-java.googlecode.com/svn/trunk@147 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Sun, 15 Jun 2014 13:35:33 +0000
parents 0594c132888b
children cc3a0578edac
line wrap: on
line diff
--- a/src/luan/lib/PickleCon.java	Sun Jun 15 10:02:16 2014 +0000
+++ b/src/luan/lib/PickleCon.java	Sun Jun 15 13:35:33 2014 +0000
@@ -23,7 +23,7 @@
 	final LuanState luan;
 	private final DataInputStream in;
 	private final LuanFunction _read_binary;
-	private final LuanTable ioModule;
+	final LuanTable ioModule;
 	private final DataOutputStream out;
 	private final List<byte[]> binaries = new ArrayList<byte[]>();
 	String src;
@@ -57,11 +57,14 @@
 
 	public Object read() throws IOException, LuanException {
 		ioModule.put("_read_binary",_read_binary);
-		src = in.readUTF();
-		LuanFunction fn = BasicLib.load(luan,src,"pickle-reader",true,false);
-		Object rtn = luan.call(fn);
-		ioModule.put("_binaries",null);
-		return rtn;
+		try {
+			src = in.readUTF();
+			LuanFunction fn = BasicLib.load(luan,src,"pickle-reader",true,false);
+			return luan.call(fn);
+		} finally {
+			ioModule.put("_binaries",null);
+			ioModule.put("_read_binary",null);
+		}
 	}
 
 	public String pickle(Object obj) throws LuanException {