From 712f94325cdd944faab47817a869d99e4959db88 Mon Sep 17 00:00:00 2001 From: phantom Date: Sun, 11 Feb 2001 15:09:31 +0000 Subject: [PATCH] Don't use hardcoded struct size, use offsetof() instead (make size calculations dynamic) --- lib/libc/locale/lmessages.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/libc/locale/lmessages.c b/lib/libc/locale/lmessages.c index 51ee10a90f05..0d026e5957b8 100644 --- a/lib/libc/locale/lmessages.c +++ b/lib/libc/locale/lmessages.c @@ -29,7 +29,9 @@ #include "lmessages.h" #include "ldpart.h" -#define LCMESSAGES_SIZE (sizeof(struct lc_messages_T) / sizeof(char *)) +#define LCMESSAGES_SIZE_FULL (sizeof(struct lc_messages_T) / sizeof(char *)) +#define LCMESSAGES_SIZE_MIN \ + (offsetof(struct lc_messages_T, yesstr) / sizeof(char *)) char empty[] = ""; @@ -49,16 +51,16 @@ __messages_load_locale(const char *name) { int ret; ret = __part_load_locale(name, &_messages_using_locale, - messages_locale_buf, "LC_MESSAGES", LCMESSAGES_SIZE, + messages_locale_buf, "LC_MESSAGES", LCMESSAGES_SIZE_FULL, (const char **)&_messages_locale); - if (ret == -1) { + if (!ret) { /* Assume that we have incomplete locale file (without * "yesstr" and "nostr" declared. Try it also. */ ret = __part_load_locale(name, &_messages_using_locale, - messages_locale_buf, "LC_MESSAGES", LCMESSAGES_SIZE/2, + messages_locale_buf, "LC_MESSAGES", LCMESSAGES_SIZE_MIN, (const char **)&_messages_locale); - if (ret != -1) { + if (!ret) { _messages_locale.yesstr = empty; _messages_locale.nostr = empty; }