From 9d27c792c25174237ad4d47e5d409efd72d57342 Mon Sep 17 00:00:00 2001
From: matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Thu, 22 May 2008 00:57:47 +0000
Subject: [PATCH] * array.c (flatten): free memo hash table before raising
 exception.   [ruby-dev:34789]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
---
 ChangeLog | 5 +++++
 array.c   | 1 +
 2 files changed, 6 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index e9acff05f7..72f03dc678 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu May 22 08:28:49 2008  Yukihiro Matsumoto  <matz@ruby-lang.org>
+
+	* array.c (flatten): free memo hash table before raising exception.
+	  [ruby-dev:34789]
+
 Thu May 22 06:30:10 2008  Hidetoshi NAGAI  <nagai@ai.kyutech.ac.jp>
 
 	* array.c (flatten): fix memory leak.
diff --git a/array.c b/array.c
index 0ec6c6e9a8..3936cede42 100644
--- a/array.c
+++ b/array.c
@@ -2848,6 +2848,7 @@ flatten(VALUE ary, int level, int *modified)
 		*modified = 1;
 		id = (st_data_t)tmp;
 		if (st_lookup(memo, id, 0)) {
+		    st_free_table(memo);
 		    rb_raise(rb_eArgError, "tried to flatten recursive array");
 		}
 		st_insert(memo, id, (st_data_t)Qtrue);