summaryrefslogtreecommitdiff
path: root/contrib/fuzzystrmatch/fuzzystrmatch.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/fuzzystrmatch/fuzzystrmatch.c')
-rw-r--r--contrib/fuzzystrmatch/fuzzystrmatch.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.c b/contrib/fuzzystrmatch/fuzzystrmatch.c
index e1222714e4..5686497983 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.c
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.c
@@ -728,16 +728,14 @@ _soundex(const char *instr, char *outstr)
Assert(instr);
Assert(outstr);
- outstr[SOUNDEX_LEN] = '\0';
-
/* Skip leading non-alphabetic characters */
- while (!isalpha((unsigned char) instr[0]) && instr[0])
+ while (*instr && !isalpha((unsigned char) *instr))
++instr;
- /* No string left */
- if (!instr[0])
+ /* If no string left, return all-zeroes buffer */
+ if (!*instr)
{
- outstr[0] = (char) 0;
+ memset(outstr, '\0', SOUNDEX_LEN + 1);
return;
}
@@ -750,7 +748,7 @@ _soundex(const char *instr, char *outstr)
if (isalpha((unsigned char) *instr) &&
soundex_code(*instr) != soundex_code(*(instr - 1)))
{
- *outstr = soundex_code(instr[0]);
+ *outstr = soundex_code(*instr);
if (*outstr != '0')
{
++outstr;
@@ -767,6 +765,9 @@ _soundex(const char *instr, char *outstr)
++outstr;
++count;
}
+
+ /* And null-terminate */
+ *outstr = '\0';
}
PG_FUNCTION_INFO_V1(difference);