On Tue, Nov 29, 2011 at 04:32:39PM +0200, Daniel Shahaf wrote: > Why isn't apr_off_t 64 bits?
Sorry, I meant apr_size_t and that seems to correspond to C89's size_t and is not supposed to be used for file sizes. apr_off_t is 64 bits, of course. > > --- subversion-1.7.1/subversion/libsvn_fs_fs/fs_fs.c.orig 2011-10-19 > > 19:28:55.000000000 +0200 > > +++ subversion-1.7.1/subversion/libsvn_fs_fs/fs_fs.c 2011-11-25 > > 16:53:56.000000000 +0100 > > @@ -2575,7 +2575,7 @@ > > > > svn_revnum_t base_revision; > > apr_off_t base_offset; > > - apr_size_t base_length; > > + svn_filesize_t base_length; > > I'd like both BASE_OFFSET and BASE_LENGTH to be 64 bit types. Would it > work to make them both svn_filesize_t? I guess it would work (on a 32 bit machine, svn_filesize_t and apr_off_t are both typedefed to "long long int" anyway), but I wanted to make the types the same as those of "offset" and "size" in libsvn_fs_fs/fs.h:representation_t where the values ultimately get assigned to. But since this is the first time I've looked at the Subversion sources, I can't really recommend anything (besides making sure that base_length is 64 bits). > Are there other instances of this problem in our code? (I'll look > myself later, but if you know or can easily find such it'll save me time > if you identified them.) I haven't noticed any other instances, but then, I've not searched for them either. All I can say is that with the patch, Subversion seems to handle large files just fine (but I've done only very limited testing so far). Thanks, Martin