Hi,
Thanks for this fix!
I've made a small additional change. Because the while-loop now also
continues if linemem != 0, I've added a statement to set linemem = 0 if
the end of the message (.\r\n as one line) is reached.
Ilja
all changes to pipe.c:
[EMAIL PROTECTED]:~/dbmail2_0$ cvs diff pipe.c
Index: pipe.c
===================================================================
RCS file: /cvsroot-dbmail/dbmail/pipe.c,v
retrieving revision 1.99.2.4
diff -r1.99.2.4 pipe.c
582c582
< while (!feof(instream) && !myeof)
---
> while ((!feof(instream) && (!myeof)) || (linemem != 0))
587a588
> usedmem += linemem;
596c597
< while (!feof(instream) && usedmem < READ_BLOCK_SIZE)
---
> while (!feof(instream) && (usedmem + linemem < READ_BLOCK_SIZE))
614a616,618
> /* make sure that the function stops by setting linemem
to zero
> */
> linemem = 0;
628a633
>
Chingson Chen wrote:
I found some problem at pipe.c that cannot read "stdin" larger than 512k ..
fixed is the diff below ...
**************************************************************************************************8
582c582
< while (!feof(instream) && !myeof)
---
while ((!feof(instream) && (!myeof)) || (linemem!=0))
587c587
< strncpy(strblock, tmpline, linemem);
---
strncpy(strblock, tmpline, linemem); usedmem+=linemem;
596c596
< while (!feof(instream) && usedmem < READ_BLOCK_SIZE)
---
while (!feof(instream) && (usedmem+linemem < READ_BLOCK_SIZE))
628a629,631
else
trace(TRACE_ERROR,"test large block.");
¹šŠYšŠX§‚X¬´6æj)]nf¢–Šà†Ûi³ÿæj)fjwÚ²Ülž_æj)fjåŠËb�ú?u¹šil==