[EMAIL PROTECTED] added to the distribution list because one of my proposed solutions is an APR enhancement]
Brad Nicholes wrote:
It appears that we are running into the same problem with Apache 2.0 that we had with Apache 1.3. The problem is recursive functions that declare large stack variables such as:
static int read_type_map(apr_file_t **map, negotiation_state *neg, request_rec *rr) { request_rec *r = neg->r; apr_file_t *map_ = NULL; apr_status_t status; char buffer[MAX_STRING_LEN]; <------------ resolves to 819
That's definitely bad. I can think of three solutions, given that this buffer is used to read a line at a time with apr_file_gets():
1. Use a smaller buffer size 2. Allocate the buffer from a pool (but that solution has its own problems, because allocating an 8KB block from a pool will often necessitate an additional malloc) 3. Create a variant of apr_file_gets() that allocates its own space from a pool supplied by the caller. (It could use a power-of-two allocator.)
I think I like the third option the best. Anybody else have an opinion on this?
--Brian
