Branch: Tag:

2018-05-17

2018-05-17 10:58:23 by Stephen R. van den Berg <srb@cuci.nl>

Stdio.Buffer: Simplify code, centralise locked_move check.

144:    return 0;    }    -  PMOD_EXPORT void io_trim( Buffer *io ) +  static void io_discard_bufstart( Buffer *io )    { -  if( io->malloced && (io->offset > 64 || io->len > 64) && !io->locked) +  if ( LIKELY(!io->locked_move) )    { -  if( io->offset > 64 && (!io->locked_move && (io->offset > io_len(io)))) -  { +     memmove( io->buffer, io_read_pointer(io), io_len(io) );    io->len -= io->offset;    io->num_move++;    io->offset = 0;    } -  +  } +  +  PMOD_EXPORT void io_trim( Buffer *io ) +  { +  if( io->malloced && (io->offset > 64 || io->len > 64) && !io->locked) +  { +  if( io->offset > 64 && io->offset > io_len(io) ) +  io_discard_bufstart(io); +     if( io->len > 64 && ((io->allocated > (io->len)*(1.0+io->max_waste))))    {    io->buffer = xrealloc( io->buffer, io->len );
224:    * as much.    *    */ -  if( LIKELY(!io->locked_move) ) +  if( UNLIKELY(force && io->offset +  || io_len(io) && io->offset > io->allocated / 2) )    { -  if( UNLIKELY((force && io->offset) || (io_len(io) && io->offset > io->allocated / 2)) ) -  { +     /* more than 50% of the buffer is available before the read pointer,    * and we can discard that data. Move the data to the beginning, making    * room for more data.    */ -  memmove( io->buffer, io_read_pointer(io), io_len(io) ); -  io->num_move++; -  io->len -= io->offset; -  io->offset = 0; +  io_discard_bufstart(io);    } -  } +        if( UNLIKELY(io->len + bytes > io->allocated) )    {