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==

Reply via email to