diff options
-rw-r--r-- | usr.bin/make/arch.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/usr.bin/make/arch.c b/usr.bin/make/arch.c index 70c5d95..775e0b2 100644 --- a/usr.bin/make/arch.c +++ b/usr.bin/make/arch.c @@ -458,26 +458,22 @@ ArchStatMember(const char *archive, const char *member, Boolean hash) ln = Lst_Find(&archives, archive, ArchFindArchive); if (ln != NULL) { + char copy[AR_MAX_NAME_LEN + 1]; + ar = Lst_Datum(ln); he = Hash_FindEntry(&ar->members, member); - if (he != NULL) { - return ((struct ar_hdr *)Hash_GetValue (he)); - } else { - /* Try truncated name */ - char copy[AR_MAX_NAME_LEN + 1]; - size_t len = strlen(member); - - if (len > AR_MAX_NAME_LEN) { - len = AR_MAX_NAME_LEN; - strncpy(copy, member, AR_MAX_NAME_LEN); - copy[AR_MAX_NAME_LEN] = '\0'; - } - if ((he = Hash_FindEntry(&ar->members, copy)) != NULL) - return (Hash_GetValue(he)); - return (NULL); + return (Hash_GetValue(he)); } + + /* Try truncated name */ + strncpy(copy, member, AR_MAX_NAME_LEN); + copy[AR_MAX_NAME_LEN] = '\0'; + + if ((he = Hash_FindEntry(&ar->members, copy)) != NULL) + return (Hash_GetValue(he)); + return (NULL); } if (!hash) { |