diff nworker.rhope @ 89:5a195ee08eac

Fix memory leak and bug that was preventing First@Dictionary from working properly
author Mike Pavone <pavone@retrodev.com>
date Sat, 31 Jul 2010 00:19:15 -0400
parents 3c4325e6298f
children bcdc326b3d6e
line wrap: on
line diff
--- a/nworker.rhope	Fri Jul 30 19:52:54 2010 -0400
+++ b/nworker.rhope	Sat Jul 31 00:19:15 2010 -0400
@@ -1331,7 +1331,8 @@
 	}{
 		,setref <- [begin setter]Write Field["obj", name]
 		{ 
-			setter <- [[~]Unbox["newval", setref]
+			setter <- [[[~]Unbox["newval", setref]
+			]Release["newval"]
 			]Move["obj", "out"]
 		}
 	}
@@ -1422,7 +1423,16 @@
 
 Register Method@NProgram[prog, name, convention, inputs, outputs: out]
 {
-	out <- [prog]Worker Refs <<[ [[prog]Worker Refs >>]Set[name, Worker Ref[name, convention, inputs, outputs, Yes]]]
+	[[prog]Worker Refs >>]Index[name]
+	{
+		ref <- [[[[~]Inputs <<[ Max[[~]Inputs >>, inputs] ]
+		]Min Inputs <<[ Min[[~]Min Inputs >>, inputs] ]
+		]Outputs <<[ Max[[~]Outputs >>, outputs] ]
+		]Min Outputs <<[ Min[[~]Min Outputs >>, outputs] ]
+	}{
+		ref <- Worker Ref[name, convention, inputs, outputs, Yes]
+	}
+	out <- [prog]Worker Refs <<[ [[prog]Worker Refs >>]Set[name, ref]]
 }
 
 Register Worker@NProgram[prog, name, convention, inputs, outputs: out]