From: Rainer Toebbicke Date: Thu, 14 Aug 2008 00:44:29 +0000 (+0000) Subject: DEVEL15-salvager-dont-corrupt-dir-lengths-20080812 X-Git-Tag: openafs-devel-1_5_52~21 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=4bd0a52bebd7bbc7209569a46390952b282a5c34;p=packages%2Fo%2Fopenafs.git 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) --- 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;