From 6cd9a58480e37e11adf7fa7d406ba118d2a7e4e5 Mon Sep 17 00:00:00 2001
From: Teodor Sigaev <teodor@sigaev.ru>
Date: Mon, 4 Dec 2006 09:26:57 +0000
Subject: [PATCH] Fix core dump of ispell for case of non-successfull
 initialization. Previous versions aren't affected.

Fix synonym dictionary init: string should be malloc'ed, not palloc'ed. Bug
introduced recently while fixing lowerstr().
---
 contrib/tsearch2/dict_syn.c     | 6 +++---
 contrib/tsearch2/ispell/spell.c | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/contrib/tsearch2/dict_syn.c b/contrib/tsearch2/dict_syn.c
index cddbd473508..05cb1102502 100644
--- a/contrib/tsearch2/dict_syn.c
+++ b/contrib/tsearch2/dict_syn.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/contrib/tsearch2/dict_syn.c,v 1.10 2006/11/20 14:03:30 teodor Exp $ */
+/* $PostgreSQL: pgsql/contrib/tsearch2/dict_syn.c,v 1.11 2006/12/04 09:26:57 teodor Exp $ */
 
 /*
  * ISpell interface
@@ -132,8 +132,8 @@ syn_init(PG_FUNCTION_ARGS)
 			continue;
 		*end = '\0';
 
-		d->syn[cur].in = lowerstr(starti);
-		d->syn[cur].out = lowerstr(starto);
+		d->syn[cur].in = strdup(lowerstr(starti));
+		d->syn[cur].out = strdup(lowerstr(starto));
 		if (!(d->syn[cur].in && d->syn[cur].out))
 		{
 			fclose(fin);
diff --git a/contrib/tsearch2/ispell/spell.c b/contrib/tsearch2/ispell/spell.c
index 66ccca4d07c..c14012a6e73 100644
--- a/contrib/tsearch2/ispell/spell.c
+++ b/contrib/tsearch2/ispell/spell.c
@@ -1528,7 +1528,7 @@ NIFree(IspellDict * Conf)
 	if (Conf->Spell)
 	{
 		for (i = 0; i < Conf->nspell; i++)
-			pfree(Conf->Spell[i]->word);
+			pfree(Conf->Spell[i]);
 		pfree(Conf->Spell);
 	}