diff options
author | phantom <phantom@FreeBSD.org> | 2001-02-11 15:09:31 +0000 |
---|---|---|
committer | phantom <phantom@FreeBSD.org> | 2001-02-11 15:09:31 +0000 |
commit | 712f94325cdd944faab47817a869d99e4959db88 (patch) | |
tree | d6b5a8840293587d971c4c869e32f01217c8c72b /lib | |
parent | 8106c1b06abc25bcd5adf33fc30b74abf7cfdeda (diff) | |
download | FreeBSD-src-712f94325cdd944faab47817a869d99e4959db88.zip FreeBSD-src-712f94325cdd944faab47817a869d99e4959db88.tar.gz |
Don't use hardcoded struct size, use offsetof() instead (make size calculations
dynamic)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/locale/lmessages.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/libc/locale/lmessages.c b/lib/libc/locale/lmessages.c index 51ee10a..0d026e5 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; } |