On 06/28/24 09:55AM, NRK wrote:
> > +void
> > +tbufnew(size_t siz) {
> 
> Seems pointless noise. Just do `siz ? (siz*2) : 128` when extending.

fixed

> > +   tbuf.buf = (char *)xmalloc(siz);
> 
> Don't cast malloc: https://c-faq.com/malloc/mallocnocast.html

fixed 

> > +size_t
> > +tbuflen(void) {
> > +   return tbuf.len;
> > +}
> 
> I'd just make the object available instead of dancing around.

st.c doesn't seem to expose any non-static globals & I don't want to
add the first.


> Braces for functions also should go on their own line.
> 
> > +   if (tbuf.siz - tbuf.len < n) {
> > +           tbuf.siz *= 2;

fixed

> What guarantees that `siz * 2` will make enough space for `n`? I don't
> see any, which makes the memcpy below a buffer overflow.
> 
> > +           tbuf.buf = xrealloc(tbuf.buf, tbuf.siz);

fixed

> I'm highly skeptical of this. If the other end is not able to keep up
> that doesn't mean we should unboundedly keep hogging up memory.

My understanding of the problem has changed, as you may see in the new
commit message.

Try pasting one-million bytes from your clipboard into mainline st now.
It will lock up.

Jeremy

                                 ..                                 
                               ......                               
                              ......                                
                            .......          ...                    
                           ........ ...      ......                 
                          .'..........  ..   ..........             
                         .,''...... ....   ..............           
                         ;;,..............  ..............          
                        .;;'......  ...    .';c:;'.......'          
                        .;;,,''........  .;lc,...,.......,.         
                        .;:odolol;.'...'::c,.............;.         
                        .::::clxxx:,'',cc;;;,','........',.         
                         cllc:::odk' .':,;::dko;........'..l.       
                        .c:ckxol;;l.  .'.;;:lc;'......'.'.::.       
                         c;'','...c   ,'..,,,'.. .......'.:,        
                        .:,..   .',   ,'...      .......'.'..       
                         ;,...  .,    ,.'..     ........'.,..       
                         ::'..  .'   .,.,'..   ........',.',.       
                        .d,;....':. ..;;,.'............,,'.,        
                        .k;:;...'ol;;:,.. ..'.........',,o'.        
                         .cc:;'..,;'...     .........',,,0kc'...    
                          o::;,'....................',,':XKxlc:;,.  
                .   ...':kk:c;,ccc;loool:c::,......',,,c:xKkoolcc.  
        ....,;::cclllodk0K0o;;',...:ddoccl,....''',,,,cl:,okdolcc.  
   ...'''',;:::::cclldxxxxO:...',:dkxxxl:.....,''''';dx:;,cOoocc:.  
 .';,',,,,,,,;,;;:clodxc'c,...,cdd:'... ....';,''';dkd;'c,dkdlc::.  
 ',;,;,,,,,,,,,,;;;:ldlc;;,;,;ddxo:'....'';::,,;lxOdc;,'c:xdlc:::.  
.';;;;,,,,,,,,,,,,,::.   .cc'..'..;locclllc:;cd00xl;;,'.lolc:::;;.  
'':;;;,,,,,,,,,,,,,'.  ..',:,'..,..'K0Okxxxk0K0ko:;,',;;c:::;;;;;.  
',c;;,,,,,,,,,,,,,.   ..,c;:o. ., .'OXXXNK0Okxoc;;;;:::;;;;,,,,,,.  
,;c;;,,,,,,,,,;;,.   ..,lllxd. .' .',kOkOolcc:::;;;;;;;;,,,,,,,,,.  
;;l;;;;;;,;;;;;;.   ...:lccl; .'....,..:d::codo;;;;;;;;,,,;,,,,,,.  
l:l::;;;;;;;;:;.   ...':,'':..,. ...;.'ldoddol:;,,,,,;,,,,;,,,,,,.  
ocl:::;;;;;:::.   ...':;..''.,c..;..c,;collll:,,,,,,;,,,,;;,,,,,,.  
cdcc:;;;;:::;.   ....;;'..,l:lkclk,.:;,c:ccc:,,,,,,,,,,,,;;,,,,,,.  
:ool:;:::::,.   ....',,....''.,:,xOd:cd:;;;:;,,,,,,,,,,,,;;;,,,,,.  
;;ll;;::;:'   ......',........,;,cxdol:,',,,''''','''''',,,,,'','.  

Reply via email to