Page 1 of 1

File size information not correct

Posted: Wed Jan 27, 2010 1:14 am
by cli
Hi,

I observed some issues with the the file size information provided by XnView.

Version info: XnView Version 1.97 (Nov 27 2009) / OS: Windows XP SP3

At least the following bug reports probably hit the same issue:
http://newsgroup.xnview.com/viewtopic.php?f=36&t=17735
http://newsgroup.xnview.com/viewtopic.php?f=36&t=18451

Here some more details of my testings:

Code: Select all

-- XnView -------------------------------------|-- FileSystem ----------------------------------------------------
Details-list  Ballon-info       Property-sheet |  Real size        Real size(hex)  File name
-----------------------------------------------|------------------------------------------------------------------
   1.00 GB     1.073.741.824    1.073.741.824     1.073.741.824    00 4000 0000     File00 (exactly 1 GB)
   2.00 GB     2.147.483.647    2.147.483.647     2.147.483.647    00 7FFF FFFF     File01 (1 Byte less than 2 GB)
              -2.147.483.648    2.147.483.648     2.147.483.648    00 8000 0000     File02 (exactly 2 GB)
              -2.147.483.647    2.147.483.649     2.147.483.649    00 8000 0001     File03 (1 Byte more than 2 GB)
              -1.073.741.824    3.221.225.472     3.221.225.472    00 C000 0000     File04 (exactly 3 GB)
                          -3    4.294.967.293     4.294.967.293    00 FFFF FFFD     File05 (3 Byte less than 4 GB)
                          -2    4.294.967.294     4.294.967.294    00 FFFF FFFE     File06 (2 Byte less than 4 GB)
                          -1    4.294.967.295     4.294.967.295    00 FFFF FFFF     File07 (1 Byte less than 4 GB)
                          -1    4.294.967.295     4.294.967.296    01 0000 0000     File08 (exactly 4 GB)
                           0                0     4.294.967.297    01 0000 0001     File09 (1 Byte more than 4 GB)
   1 bytes                 1                1     4.294.967.298    01 0000 0002     File10 (2 Byte more than 4 GB)
1024.00 MB     1.073.741.823    1.073.741.823     5.368.709.120    01 4000 0000     File11 (exactly 5 GB)
   2.00 GB     2.147.483.647    2.147.483.647     6.442.450.944    01 8000 0000     File12 (exactly 6 GB)
              -2.147.483.648    2.147.483.648     6.442.450.945    01 8000 0001     File13 (1 Byte more than 6 GB)
              -2.147.483.647    2.147.483.649     6.442.450.946    01 8000 0002     File14 (2 Byte more than 6 GB)
              -1.073.741.825    3.221.225.471     7.516.192.768    01 C000 0000     File15 (exactly 7 GB)
                          -4    4.294.967.292     8.589.934.589    01 FFFF FFFD     File16 (3 Byte less than 8 GB)
                          -3    4.294.967.293     8.589.934.590    01 FFFF FFFE     File17 (2 Byte less than 8 GB)
                          -2    4.294.967.294     8.589.934.591    01 FFFF FFFF     File18 (1 Byte less than 8 GB)
                          -2    4.294.967.294     8.589.934.592    02 0000 0000     File19 (exactly 8 GB)
                          -1    4.294.967.295     8.589.934.593    02 0000 0001     File20 (1 Byte more than 8 GB)
                           0                0     8.589.934.594    02 0000 0002     File21 (2 Byte more than 8 GB)
   1 bytes                 1                1     8.589.934.595    02 0000 0003     File22 (3 Byte more than 8 GB)
 785.68 MB       823.844.862      823.844.862     9.413.779.456    02 311A E000     File23 (more than 8 GB)
-----------------------------------------------|------------------------------------------------------------------
Note:  Numbers with no dimension are in "bytes".
       Missing values in the "Details-list" column are also missing in the "Details"-view of XnView.
As a short interpretation of these testings, probably the problem is the variable type (signed long integer) used during evaluation and/or storage of the file size. The dimension of the variable used is too small the values runs over the boundaries of the variable, first producing a negation of the value at 2 GB. The numbering stays negative until it reaches zero at the file's true size of 4 GB. This behavour repeats for all further following 4 GB.
Depending on programming aproaches to display this object property, the displayed information differs:
  • In the detail listing of the right pane the size will diplay only values between 0 to 2 GB. Values between 3 GB and 4 GB are not displayed as obviously negative values are not allowed or defined for this field.
    This behavour repeats: 4 Gb to 6 GB are interpreted as 0 to 2 GB, 6 GB to 8 GB are interpreted as 2 GB to 4 GB. etc. etc..
  • In the yellow ballon information string for the file entry, the size information is probably pasted as string from the original variable. So here the oscillation of the 4 GB period is documented incusive the negative values of the variable between 3 GB to 4 GB.
  • The "Properties" popup windows takes a third aproach. It will display the size value as it should be, but unfortuatelly truncated by MODULO(4GB) as an effect of the original too short "size"-variable. Probably an unsigned long integer has been used within the "Properites" code.
The drifting of the zero-point after each 4 GB oscillation should be tested after the problem fix. The doubled apperance of the value "-1" at the 4 GB borders looks like some insane "side effects". I've rechecked these values to prevent a documentation error.

I hope it helps!
cu,
cli