Dialog.py: d.num should be numeric, not string
Tkinter.py: on destroy(), remove self from master's dict of children
diff --git a/Lib/lib-tk/Dialog.py b/Lib/lib-tk/Dialog.py
index 28222ec..022bd96 100644
--- a/Lib/lib-tk/Dialog.py
+++ b/Lib/lib-tk/Dialog.py
@@ -4,11 +4,12 @@
 class Dialog(Widget):
 	def __init__(self, master=None, cnf={}):
 		Widget._setup(self, master, cnf)
-		self.num = apply(self.tk.call,
-				 ('tk_dialog', self._w,
-				  cnf['title'], cnf['text'], 
-				  cnf['bitmap'], cnf['default'])
-				 + cnf['strings'])
+		self.num = self.tk.getint(
+			apply(self.tk.call,
+			      ('tk_dialog', self._w,
+			       cnf['title'], cnf['text'], 
+			       cnf['bitmap'], cnf['default'])
+			      + cnf['strings']))
 		try: Widget.destroy(self)
 		except TclError: pass
 	def destroy(self): pass
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 5a2e6b2..4b012f1 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -679,6 +679,8 @@
 		return self._w
 	def destroy(self):
 		for c in self.children.values(): c.destroy()
+		if self.master.children.has_key(self._name):
+			del self.master.children[self._name]
 		self.tk.call('destroy', self._w)
 	def _do(self, name, args=()):
 		return apply(self.tk.call, (self._w, name) + args) 
diff --git a/Lib/tkinter/Dialog.py b/Lib/tkinter/Dialog.py
index 28222ec..022bd96 100755
--- a/Lib/tkinter/Dialog.py
+++ b/Lib/tkinter/Dialog.py
@@ -4,11 +4,12 @@
 class Dialog(Widget):
 	def __init__(self, master=None, cnf={}):
 		Widget._setup(self, master, cnf)
-		self.num = apply(self.tk.call,
-				 ('tk_dialog', self._w,
-				  cnf['title'], cnf['text'], 
-				  cnf['bitmap'], cnf['default'])
-				 + cnf['strings'])
+		self.num = self.tk.getint(
+			apply(self.tk.call,
+			      ('tk_dialog', self._w,
+			       cnf['title'], cnf['text'], 
+			       cnf['bitmap'], cnf['default'])
+			      + cnf['strings']))
 		try: Widget.destroy(self)
 		except TclError: pass
 	def destroy(self): pass
diff --git a/Lib/tkinter/Tkinter.py b/Lib/tkinter/Tkinter.py
index 5a2e6b2..4b012f1 100755
--- a/Lib/tkinter/Tkinter.py
+++ b/Lib/tkinter/Tkinter.py
@@ -679,6 +679,8 @@
 		return self._w
 	def destroy(self):
 		for c in self.children.values(): c.destroy()
+		if self.master.children.has_key(self._name):
+			del self.master.children[self._name]
 		self.tk.call('destroy', self._w)
 	def _do(self, name, args=()):
 		return apply(self.tk.call, (self._w, name) + args)