diff options
author | Andrey A. Chernov <ache@FreeBSD.org> | 1998-05-15 23:23:45 +0000 |
---|---|---|
committer | Andrey A. Chernov <ache@FreeBSD.org> | 1998-05-15 23:23:45 +0000 |
commit | f921939f942e617efdbbf1d51fb9ae61d0a0943d (patch) | |
tree | df09d9f4be6ab227a867eac63a47cf1941562abd /mail | |
parent | Marked BROKEN until I find the reason it's core-dumping on startup. (diff) |
Fix big messages realloc strategy
Notes
Notes:
svn path=/head/; revision=11000
Diffstat (limited to 'mail')
-rw-r--r-- | mail/procmail/files/patch-ae | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/mail/procmail/files/patch-ae b/mail/procmail/files/patch-ae new file mode 100644 index 000000000000..21a510ef7ccb --- /dev/null +++ b/mail/procmail/files/patch-ae @@ -0,0 +1,32 @@ +*** src/pipes.c.bak Mon Apr 28 04:27:47 1997 +--- src/pipes.c Sat May 16 03:22:43 1998 +*************** +*** 234,239 **** +--- 234,240 ---- + + char*readdyn(bf,filled)char*bf;long*const filled; + { int i;long oldsize; ++ long fetched = *filled; + oldsize= *filled; + goto jumpin; + do +*************** +*** 243,249 **** + if((size_t)*filled>=(size_t)(*filled+BLKSIZ)) + lcking|=lck_MEMORY,nomemerr(); + #endif +! bf=realloc(bf,*filled+BLKSIZ); /* dynamically adjust the buffer size */ + jumpback:; + } + while(0<(i=rread(STDIN,bf+*filled,BLKSIZ))); /* read mail */ +--- 244,253 ---- + if((size_t)*filled>=(size_t)(*filled+BLKSIZ)) + lcking|=lck_MEMORY,nomemerr(); + #endif +! if( fetched - *filled < BLKSIZ ) { +! fetched += 4194304; +! bf=realloc(bf,fetched); /* dynamically adjust the buffer size */ +! } + jumpback:; + } + while(0<(i=rread(STDIN,bf+*filled,BLKSIZ))); /* read mail */ |