Ignore 'ValidDataLength' completely.
authorshort <>
Fri, 28 Nov 2003 22:03:45 +0000 (22:03 +0000)
committershort <>
Fri, 28 Nov 2003 22:03:45 +0000 (22:03 +0000)
 - In some cases (during NTFS mount) there may be invalid 'ValidDataLength'.
 - Bugreported by Nir Misgav.

src/libcaptive/cc/sharedcachemap-priv.h
src/libcaptive/cc/sharedcachemap.c

index af2fcac..7a7cf07 100644 (file)
@@ -57,6 +57,8 @@ struct _CaptiveSharedCacheMapObject {
        /* We use do not use 'ValidDataLength' as I assume W32
         * automatically increases 'ValidDataLength' during Cache Manager write operations.
         * We do not increase it and therefore it is mostly useless for us.
+        * In some cases (during NTFS mount) there may be also invalid 'ValidDataLength' at all:
+        *      CcSetFileSizes(AllocationSize=0x1000000,FileSize=0xf80208,ValidDataLength=0x23b801a0)
         */
        guint64 ValidDataLength;        /* ==CC_FILE_SIZES.ValidDataLength.QuadPart */
        /* The real allocation size of 'buffer' and 'pages'.
index 055611a..0b1c356 100644 (file)
@@ -347,8 +347,12 @@ guint64 AllocationSize,FileSize,ValidDataLength;
        FileSize=FileSizes->FileSize.QuadPart;
        ValidDataLength=FileSizes->ValidDataLength.QuadPart;
 
-       if (ValidDataLength==G_MAXINT64)
-               ValidDataLength=FileSize;
+       /* Do not: if (ValidDataLength==G_MAXINT64)
+        *              ValidDataLength=FileSize;
+        * In some cases (during NTFS mount) there may be also invalid 'ValidDataLength' at all:
+        *      CcSetFileSizes(AllocationSize=0x1000000,FileSize=0xf80208,ValidDataLength=0x23b801a0)
+        */
+       ValidDataLength=FileSize;
 
        g_assert(AllocationSize>=0);
        g_assert(FileSize>=0);