On Sun, Nov 06, 2005 at 01:52:14PM -0500, Charles Wilson wrote: >Christopher Faylor wrote: > >>A signal shouldn't cause a truncated read when retrieving data from >>disk on cygwin or linux. > >ACK. > >>I think the only sane way to handle this is to put the read in a loop >>and realloc the buffer as needed as long as the read continues to return >>'>0'. > >Ok. > >>It's obviously pretty racy to get the size of the file and then expect that >>you'll be able to read in exactly that many bytes. > >ACK. > >Revised patch attached. I'm wondering, tho, about the advisability of >using alloca'ed (rather than malloc'ed) memory to hold the contents of a >file of unrestricted size. Aren't there limits on the available space >within a single stack frame? Does it make sense (is it legal) to alloca >40k or 50k or 500k? of memory? > >Granted, most /var/lib/alternatives files are going to be fairly small >(< 1k) but there's no guarantee of that...
I have mixed feelings about alloca, personally. I use it all of the time but it is always with some trepidation because, AFAIK, the failure condition for alloca is a SEGV. OTOH, it is very convenient. In this case, however, I think you really want to use realloc. You could even rely on the fact that realloc(NULL, n) is equivalent to malloc(n). cgf -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/