void streambuf::setb( char *buf, char *ebuf, int autodelete ) { __lock_it( __b_lock ); if( __delete_reserve ) { _plib_free( __reserve_base ); } if( (buf == NULL) || (ebuf <= buf) ) { __reserve_base = NULL; __reserve_end = NULL; __delete_reserve = 0; __unbuffered_state = 1; } else { __reserve_base = buf; __reserve_end = ebuf; __delete_reserve = (char)(autodelete ? 1 : 0); __unbuffered_state = 0; } }
void streambuf::setb( char *buf, char *ebuf, int autodelete ) { /*************************************************************/ // Set up a new reserve area. // Delete the old one if necessary. // Turn buffering on. __lock_it( __b_lock ); if( __delete_reserve ) { _plib_free( __reserve_base ); } if( (buf == NULL) || (ebuf <= buf) ) { __reserve_base = NULL; __reserve_end = NULL; __delete_reserve = 0; __unbuffered_state = 1; } else { __reserve_base = buf; __reserve_end = ebuf; __delete_reserve = (char)(autodelete ? 1 : 0); __unbuffered_state = 0; } }
streambuf::~streambuf() { if( __delete_reserve ) { _plib_free( __reserve_base ); } }