
From grdetil@scrc.umanitoba.ca Tue Aug  3 13:41:24 1999
Date: Tue, 3 Aug 1999 15:11:10 -0500 (CDT)
From: Gilles Detillieux <grdetil@scrc.umanitoba.ca>
To: htdig@htdig.org
Cc: ccx009@coventry.ac.uk
Subject: [htdig] possible fix for PR#514 - htfuzzy core dumping


I think this patch will fix PR#514 in the bug database.  It's Geoff's
first patch, with a minor correction, plus an added test in the vscode
macro, which is where the problem seemed to be happening.  The author
of the metaphone code likely assumed that isalpha() meant [A-Za-z],
and forgot about upper half characters.  This won't do anything to map
accented vowels to their unaccented counterparts, but it should hopefully
put an end to the segmentation faults.

--- htdig-3.1.2.bak/htfuzzy/Fuzzy.cc	Wed Apr 21 21:47:58 1999
+++ htdig-3.1.2/htfuzzy/Fuzzy.cc	Fri Jul 30 16:37:42 1999
@@ -55,6 +55,8 @@ Fuzzy::getWords(char *word, List &words)
 {
     if (!index)
 	return;
+    if (!word || !*word)
+	return;
 
     //
     // Convert the word to a fuzzy key
--- htdig-3.1.2.bak/htfuzzy/Metaphone.cc	Wed Apr 21 21:47:58 1999
+++ htdig-3.1.2/htfuzzy/Metaphone.cc	Tue Aug  3 14:50:06 1999
@@ -51,7 +51,7 @@ static char     vsvfn[26] = {
         /* N  O  P  Q  R  S  T  U  V  W  X  Y  Z  */
 
 /* Macros to access character coding array */
-#define vscode(x)  (vsvfn[(x) - 'A'])
+#define vscode(x)  ((x) >= 'A' && (x) <= 'Z' ? vsvfn[(x) - 'A'] : 0)
 #define vowel(x)   ((x) != '\0' && vscode(x) & 1)   /* AEIOU */
 #define same(x)    ((x) != '\0' && vscode(x) & 2)   /* FJLMNR */
 #define varson(x)  ((x) != '\0' && vscode(x) & 4)   /* CGPST */
@@ -63,6 +63,9 @@ static char     vsvfn[26] = {
 void
 Metaphone::generateKey(char *word, String &key)
 {
+    if (!word || !*word)
+      return;
+
     char			*n;
     String			ntrans;
 	


-- 
Gilles R. Detillieux              E-mail: <grdetil@scrc.umanitoba.ca>
Spinal Cord Research Centre       WWW:    http://www.scrc.umanitoba.ca/~grdetil
Dept. Physiology, U. of Manitoba  Phone:  (204)789-3766
Winnipeg, MB  R3E 3J7  (Canada)   Fax:    (204)789-3930

------------------------------------
To unsubscribe from the htdig mailing list, send a message to
htdig@htdig.org containing the single word unsubscribe in
the SUBJECT of the message.

