325765 Cache causes crash crossing architecture [@ nsDiskCacheRecord::HashNumber].[@ nsDiskCacheMap::FindRecord]. Disk cache is not endian-neutral as was intended. Byte-swap the entire cache header. r=darin sr=smfr a/1.8=darin
git-svn-id: svn://10.0.0.236/trunk@188939 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
2
mozilla/netwerk/cache/src/nsDiskCache.h
vendored
2
mozilla/netwerk/cache/src/nsDiskCache.h
vendored
@@ -53,7 +53,7 @@
|
||||
class nsDiskCache {
|
||||
public:
|
||||
enum {
|
||||
kCurrentVersion = 0x00010007 // format = 16 bits major version/16 bits minor version
|
||||
kCurrentVersion = 0x00010009 // format = 16 bits major version/16 bits minor version
|
||||
};
|
||||
|
||||
enum { kData, kMetaData };
|
||||
|
||||
10
mozilla/netwerk/cache/src/nsDiskCacheMap.h
vendored
10
mozilla/netwerk/cache/src/nsDiskCacheMap.h
vendored
@@ -358,6 +358,11 @@ struct nsDiskCacheHeader {
|
||||
mEntryCount = htonl(mEntryCount);
|
||||
mIsDirty = htonl(mIsDirty);
|
||||
mRecordCount = htonl(mRecordCount);
|
||||
|
||||
for (PRUint32 i = 0; i < kBuckets ; i++) {
|
||||
mEvictionRank[i] = htonl(mEvictionRank[i]);
|
||||
mBucketUsage[i] = htonl(mBucketUsage[i]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -369,6 +374,11 @@ struct nsDiskCacheHeader {
|
||||
mEntryCount = ntohl(mEntryCount);
|
||||
mIsDirty = ntohl(mIsDirty);
|
||||
mRecordCount = ntohl(mRecordCount);
|
||||
|
||||
for (PRUint32 i = 0; i < kBuckets ; i++) {
|
||||
mEvictionRank[i] = ntohl(mEvictionRank[i]);
|
||||
mBucketUsage[i] = ntohl(mBucketUsage[i]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user