Stefan Fuhrmann wrote: > Thanks for the corrections! > Committed as r1674165.
Thanks. Here's another: [[[ Index: subversion/libsvn_fs_fs/fs.h =================================================================== --- subversion/libsvn_fs_fs/fs.h (revision 1674067) +++ subversion/libsvn_fs_fs/fs.h (working copy) @@ -527,7 +527,8 @@ typedef struct representation_t svn_filesize_t size; /* The size of the fulltext of the representation. If this is 0, - * the fulltext size is equal to representation size in the rev file, */ + * for a plain rep, the real fulltext size is equal to the SIZE field. + * For a delta rep, this field is always the real fulltext size. */ svn_filesize_t expanded_size; /* Is this a representation (still) within a transaction? */ Index: subversion/libsvn_fs_fs/fs_fs.c =================================================================== --- subversion/libsvn_fs_fs/fs_fs.c (revision 1674067) +++ subversion/libsvn_fs_fs/fs_fs.c (working copy) @@ -1386,11 +1386,11 @@ svn_fs_fs__file_length(svn_filesize_t *l { /* Work around a FSFS format quirk (see issue #4554). - A plain representation may specify its EXPANDED LENGTH as "0" + A plain representation may specify its EXPANDED_SIZE as "0" in which case, the SIZE value is what we want. - Because EXPANDED_LENGTH will also be 0 for empty files, while - SIZE is non-null, we need to check wether the content is + Because EXPANDED_SIZE will also be 0 for empty files, while + SIZE may be non-zero (a delta rep), we need to check whether the content is actually empty. We simply compare with the MD5 checksum of empty content (sha-1 is not always available). */ @@ -1400,7 +1400,7 @@ svn_fs_fs__file_length(svn_filesize_t *l if (memcmp(empty_md5->digest, data_rep->md5_digest, sizeof(data_rep->md5_digest))) { - /* Contents is not empty, i.e. EXPANDED_LENGTH cannot be the + /* Contents is not empty, i.e. EXPANDED_SIZE cannot be the actual file length. */ *length = data_rep->size; } ]]] - Julian