diff options
author | Patrick Lam <plam@MIT.EDU> | 2005-11-16 15:55:17 +0000 |
---|---|---|
committer | Patrick Lam <plam@MIT.EDU> | 2005-11-16 15:55:17 +0000 |
commit | 7fd7221e683d6c65b9199fd06d34d5215582748e (patch) | |
tree | c072468c4001de4ee182dbfcf2a8f98eef05834b /src/fclang.c | |
parent | 82f35f8bb4fe58ebc839531f4a63544dc07f0f5d (diff) |
Add *NeededBytesAlign(), which overestimates the padding which is later
added by the new ALIGN macro. Fix alignment problems on ia64 and s390
by bumping up block_ptr appropriately. (Earlier version by Andreas
Schwab).
Use sysconf to determine proper PAGESIZE value; this appears to be
POSIX-compliant. (reported by Andreas Schwab)
reviewed by: plam
Diffstat (limited to 'src/fclang.c')
-rw-r--r-- | src/fclang.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/fclang.c b/src/fclang.c index b1c7c3f..5518821 100644 --- a/src/fclang.c +++ b/src/fclang.c @@ -721,6 +721,12 @@ FcLangSetNeededBytes (const FcLangSet *l) return sizeof (FcLangSet); } +int +FcLangSetNeededBytesAlign (void) +{ + return __alignof__ (FcLangSet); +} + static FcBool FcLangSetEnsureBank (int bi) { @@ -749,6 +755,7 @@ FcLangSetDistributeBytes (FcCache * metadata, void * block_ptr) if (!FcLangSetEnsureBank(bi)) return 0; + block_ptr = ALIGN(block_ptr, FcLangSet); langsets[bi] = block_ptr; block_ptr = (void *)((char *)block_ptr + langset_count * sizeof(FcLangSet)); @@ -778,6 +785,7 @@ FcLangSetUnserialize (FcCache metadata, void *block_ptr) return 0; FcMemAlloc (FC_MEM_LANGSET, metadata.langset_count * sizeof(FcLangSet)); + block_ptr = ALIGN(block_ptr, FcLangSet); langsets[bi] = (FcLangSet *)block_ptr; block_ptr = (void *)((char *)block_ptr + metadata.langset_count * sizeof(FcLangSet)); |