On 19.01.2015 00:59, Stefan Fuhrmann wrote:
>
>
> On Thu, Jan 15, 2015 at 2:20 PM, Branko Čibej <br...@wandisco.com
> <mailto:br...@wandisco.com>> wrote:
>
>     On 15.01.2015 13:38, i...@apache.org <mailto:i...@apache.org> wrote:
>     > Author: ivan
>     > Date: Thu Jan 15 12:38:13 2015
>     > New Revision: 1652076
>     >
>     > URL: http://svn.apache.org/r1652076
>     > Log:
>     > Fix mostly theoretical data corruption in log-addressing enabled
>     FSFS
>     > repositories when physical-to-logical index will be more than 4
>     GB on
>     > 32-bit platform.
>     >
>     > * subversion/libsvn_fs_fs/index.c
>     >   (svn_fs_fs__p2l_index_append): Use proper type (apr_uint64_t)
>     for local
>     >    variable that holds file size.
>
>     How about using svn_filesize_t instead, for clarity. Or apr_off_t
>     which
>     should always have the required range.
>
>
> Any of these would be fine(-ish). With apr_off_t, compilers
> would require an explicit downcast because the svn_filesize_t
> returned by the spill buffer is always an int64. The values are
> guaranteed to be non-negative, which makes conversion to
> unsigned safe.
>
> The code in question is part of the "constructor" that writes
> the index section of some file where the target type is uint64.
> Limitations of the local system will be checked when the index
> gets read again.
>
> So ultimately, we will convert to uint64 before writing to disk.
> Ivan chose to do it immediately and there is no drawback to that.

Yes, his argument (that everything else uses plain apr_uint64_t) is valid.

-- Brane

Reply via email to