diff options
Diffstat (limited to 'src/cmd4.cc')
-rw-r--r-- | src/cmd4.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/cmd4.cc b/src/cmd4.cc index 48fc279b..ab9e4281 100644 --- a/src/cmd4.cc +++ b/src/cmd4.cc @@ -3422,29 +3422,29 @@ static void plural_aux(char *name) } /* Broken plurals are, well, broken */ - else if (name[name_len - 1] == 'y') + else if (name_len >= 1 && name[name_len - 1] == 'y') { strcpy(&name[name_len - 1], "ies"); } - else if (streq(&name[name_len - 4], "ouse")) + else if (name_len >= 4 && streq(&name[name_len - 4], "ouse")) { strcpy(&name[name_len - 4], "ice"); } - else if (streq(&name[name_len - 6], "kelman")) + else if (name_len >= 6 && streq(&name[name_len - 6], "kelman")) { strcpy(&name[name_len - 6], "kelmen"); } - else if (streq(&name[name_len - 2], "ex")) + else if (name_len >= 2 && streq(&name[name_len - 2], "ex")) { strcpy(&name[name_len - 2], "ices"); } - else if (streq(&name[name_len - 3], "olf")) + else if (name_len >= 3 && streq(&name[name_len - 3], "olf")) { strcpy(&name[name_len - 3], "olves"); } /* Now begins sane cases */ - else if ((streq(&name[name_len - 2], "ch")) || (name[name_len - 1] == 's')) + else if ((name_len >= 2 && streq(&name[name_len - 2], "ch")) || (name_len >= 1 && name[name_len - 1] == 's')) { strcpy(&name[name_len], "es"); } |