Re: read() MAX_IO_SIZE bytes, more than SSIZE_MAX?
- From
Joachim Schmitz <jojo@schmitz-digital.de>
- Date
- Feb 7, 2015, 22:31 UTC
- Message-ID
- <loom.20150207T232422-706@post.gmane.org>
- In-Reply-To
- <CAPc5daUnKcktv0xcz-fGEApckbkQksKuZO53ZL20E1MhtZmn4w@mail.gmail.com>
Junio C Hamano <gitster <at> pobox.com> writes:
> > On Sat, Feb 7, 2015 at 12:32 PM, Torsten Bögershausen <tboegi <at>
web.de> wrote:
> > I don't know every platform of the planet well enough to be helpful
here,
> > especially the ones which don't follow all the specifications. > > > > In other words: As long as we can not guarantee that SSIZE_MAX is
defined,
> > (and is defined to somethong useful for xread()/xwrite() ) > > we should be more defensive here: > > > > tweak only on platform where we know it is needed and we know that it
works.
Show 11 quoted lines
> > Yup, I agree that is a sensible way to go. > > (1) if Makefile overrides the size, use it; otherwise > (2) if SSIZE_MAX is defined, and it is smaller than our internal > default, use it; otherwise > (3) use our internal default. > > And leave our internal default to 8MB. > > That way, nobody needs to do anything differently from his current build
set-up,
> and I suspect that it would make step (1) optional. >
something like this:
/* allow overwriting from e.g. Makefile */ #if !defined(MAX_IO_SIZE) # define MAX_IO_SIZE (8*1024*1024) #endif /* for plattforms that have SSIZE and have it smaller */ #if defined(SSIZE_MAX && (SSIZE_MAX < MAX_IO_SIZE) # undef MAX_IO_SIZE /* avoid warning */ # define MAX_IO_SIZE SSIZE_MAX #endif
Steps 2 and 3 only , indeed step 1 not needed...
Bye, Jojo