--- seg_manager.c.old	2005-10-23 05:19:27.387556250 +0000
+++ seg_manager.c	2005-10-23 05:23:08.785392750 +0000
@@ -898,8 +898,18 @@
 		scr->locals_block = NULL;
 		return NULL;
 	} else {
-		mem_obj_t *mobj = alloc_nonscript_segment(self, MEM_OBJ_LOCALS,
-							  &scr->locals_segment);
+		mem_obj_t *mobj;
+		local_variables_t *locals;
+
+		if (scr->locals_segment) {
+			mobj = self->heap[scr->locals_segment];
+			VERIFY (mobj != NULL, "Re-used locals segment was NULL'd out");
+			VERIFY (mobj->type == MEM_OBJ_LOCALS, "Re-used locals segment did not consist of local variables");
+			VERIFY (mobj->data.locals.script_id == scr->nr, "Re-used locals segment belonged to other script");
+		} else
+			mobj = alloc_nonscript_segment(self, MEM_OBJ_LOCALS,
+						       &scr->locals_segment);
+
 		local_variables_t *locals = scr->locals_block = &(mobj->data.locals);
 
 		locals->script_id = scr->nr;
