From 9bf438308e197f904dcf3a6c9cd9117f35e611cd Mon Sep 17 00:00:00 2001
From: Ben Pfaff <blp@gnu.org>
Date: Wed, 5 Sep 2007 04:49:41 +0000
Subject: [PATCH] (cmd_crosstabs): Free xtab and the structures that it points
 to, to plug a memory leak.  Fixes bug #18315.

---
 src/language/stats/ChangeLog   | 5 +++++
 src/language/stats/crosstabs.q | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/src/language/stats/ChangeLog b/src/language/stats/ChangeLog
index 55c4a8e3f3..e9ec8fcd0f 100644
--- a/src/language/stats/ChangeLog
+++ b/src/language/stats/ChangeLog
@@ -1,3 +1,8 @@
+2007-09-04  Ben Pfaff  <blp@gnu.org>
+
+	* crosstabs.q (cmd_crosstabs): Free xtab and the structures that
+	it points to, to plug a memory leak.  Fixes bug #18315.
+
 2007-08-15  Jason Stover  <jhs@wonko.gcsu.edu>
 
 	* regression.q (identify_indep_vars): Print an error if dependent
diff --git a/src/language/stats/crosstabs.q b/src/language/stats/crosstabs.q
index e57d9343c7..8adf044c95 100644
--- a/src/language/stats/crosstabs.q
+++ b/src/language/stats/crosstabs.q
@@ -191,11 +191,16 @@ int
 cmd_crosstabs (struct lexer *lexer, struct dataset *ds)
 {
   int result = internal_cmd_crosstabs (lexer, ds);
+  int i;
 
   free (variables);
   pool_destroy (pl_tc);
   pool_destroy (pl_col);
 
+  for (i = 0; i < nxtab; i++)
+    free (xtab[i]);
+  free (xtab);
+
   return result;
 }
 
-- 
2.30.2