From 4bd0a52bebd7bbc7209569a46390952b282a5c34 Mon Sep 17 00:00:00 2001 From: Rainer Toebbicke Date: Thu, 14 Aug 2008 00:44:29 +0000 Subject: [PATCH] DEVEL15-salvager-dont-corrupt-dir-lengths-20080812 LICENSE IPL10 FIXES 111585 make the int64 macros work when the "64 bit" number to fill isn't. use the correct variable type for length in salvager (cherry picked from commit e5bf9b91eaf8cb930c6cf70419983901907db84d) --- src/config/stds.h | 4 ++-- src/vol/vol-salvage.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/config/stds.h b/src/config/stds.h index 4e5d9d181..62d64db6b 100644 --- a/src/config/stds.h +++ b/src/config/stds.h @@ -79,8 +79,8 @@ typedef unsigned long long afs_uint64; #define CompareUInt64(a,b) (afs_uint64)(a) - (afs_uint64)(b) #define NonZeroInt64(a) (a) #define Int64ToInt32(a) (a) & MAX_AFS_UINT32 -#define FillInt64(t,h,l) (t) = (h); (t) <<= 32; (t) |= (l); -#define SplitInt64(t,h,l) (h) = (t) >> 32; (l) = (t) & MAX_AFS_UINT32; +#define FillInt64(t,h,l) (t) = ((afs_int64)(h) << 32) | (l); +#define SplitInt64(t,h,l) (h) = ((afs_int64)t) >> 32; (l) = (t) & MAX_AFS_UINT32; #define RoundInt64ToInt32(a) (a > MAX_AFS_UINT32) ? MAX_AFS_UINT32 : a; #define RoundInt64ToInt31(a) (a > MAX_AFS_INT32) ? MAX_AFS_INT32 : a; #else /* AFS_64BIT_ENV */ diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index 8487240cc..4e823cdc8 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -2321,7 +2321,7 @@ CopyAndSalvage(register struct DirSummary *dir) afs_sfsize_t lcode; afs_int32 parentUnique = 1; struct VnodeEssence *vnodeEssence; - afs_size_t length; + afs_fsize_t length; if (Testing) return; -- 2.39.5