summaryrefslogtreecommitdiffstats
path: root/lib/libc/locale/lmessages.c
diff options
context:
space:
mode:
authorphantom <phantom@FreeBSD.org>2001-02-11 15:09:31 +0000
committerphantom <phantom@FreeBSD.org>2001-02-11 15:09:31 +0000
commit712f94325cdd944faab47817a869d99e4959db88 (patch)
treed6b5a8840293587d971c4c869e32f01217c8c72b /lib/libc/locale/lmessages.c
parent8106c1b06abc25bcd5adf33fc30b74abf7cfdeda (diff)
downloadFreeBSD-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/libc/locale/lmessages.c')
-rw-r--r--lib/libc/locale/lmessages.c12
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;
}
OpenPOWER on IntegriCloud