From 9c602f1e6b00936029b72a8ddd9e6dbe0596e972 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Sun, 28 Jun 2009 18:44:28 +0000 Subject: [PATCH] - MFH: Fixed bug #48709 (metaphone and 'wh') --- NEWS | 1 + ext/standard/metaphone.c | 7 +++--- ext/standard/tests/strings/bug48709.phpt | 31 ++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 ext/standard/tests/strings/bug48709.phpt diff --git a/NEWS b/NEWS index a9782685f9..3601d51a07 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ PHP NEWS - Fixed regression in cURL extension that prevented flush of data to output defined as a file handle. (Ilia) +- Fixed bug #48709 (metaphone and 'wh'). (brettz9 at yahoo dot com, Felipe) - Fixed bug #48693 (Double declaration of __lambda_func when lambda wrongly formatted). (peter at lvp-media dot com, Felipe) - Fixed bug #48661 (phpize is broken with non-bash shells). (Jani) diff --git a/ext/standard/metaphone.c b/ext/standard/metaphone.c index d3b1960b55..235b4a996d 100644 --- a/ext/standard/metaphone.c +++ b/ext/standard/metaphone.c @@ -225,15 +225,14 @@ static int metaphone(unsigned char *word, int word_len, long max_phonemes, char w_idx += 2; } break; - /* WH becomes H, + /* WH becomes W, WR becomes R W if followed by a vowel */ case 'W': - if (Next_Letter == 'H' || - Next_Letter == 'R') { + if (Next_Letter == 'R') { Phonize(Next_Letter); w_idx += 2; - } else if (isvowel(Next_Letter)) { + } else if (Next_Letter == 'H' || isvowel(Next_Letter)) { Phonize('W'); w_idx += 2; } diff --git a/ext/standard/tests/strings/bug48709.phpt b/ext/standard/tests/strings/bug48709.phpt new file mode 100644 index 0000000000..999a2c6513 --- /dev/null +++ b/ext/standard/tests/strings/bug48709.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #48709 (metaphone and 'wh') +--FILE-- + %s\n", $letter, metaphone($letter)); +} + +?> +--EXPECT-- +kn => N +gn => N +pn => N +ae => E +wr => R +x => S +wh => W +wa => W -- 2.40.0