Re: [PATCH 0/5] Retry if fdopen() fails due to ENOMEM
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Mar 6, 2015, 05:08 UTC
- Message-ID
- <54F9365E.2000705@web.de>
- In-Reply-To
- <1425571669-22800-1-git-send-email-mhagger@alum.mit.edu>
On 03/05/2015 05:07 PM, Michael Haggerty wrote:
Show 13 quoted lines
> One likely reason for fdopen() to fail is the lack of memory for > allocating a FILE structure. When that happens, try freeing some > memory and calling fdopen() again in the hope that it will work the > second time. > > This change was suggested by Jonathan Nieder [1] > > In the first patch it is unsatisfying that try_to_free_routine() is > called with a magic number (1000) rather than sizeof(FILE). But the C > standard doesn't guarantee that FILE is a complete type, so I can't > think of a better approach. Suggestions, anybody? > >
it's not the sizeof(FILE) which is critical, it is the size of the buffer associated with a FILE
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdio.h.html
BUFSIZ may be your friend, and if it is not defined, 4096 may be a useful default.