From c1b74c211a117a9f6e05f6d2e47dd633cc5f40e2 Mon Sep 17 00:00:00 2001 From: "Nathan C. Myers" Date: Wed, 18 Jun 2003 17:17:52 +0000 Subject: [PATCH] fstream.tcc (setbuf): Allow (__s... 2003-06-18 Nathan C. Myers Paolo Carlini * include/bits/fstream.tcc (setbuf): Allow (__s, 1) too, simply equivalent to the unbuffered case (0, 0) as far as _M_buf_size is concerned. Co-Authored-By: Paolo Carlini From-SVN: r68160 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/include/bits/fstream.tcc | 15 ++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a6e67e7d9a5..a77f7ec8011 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2003-06-18 Nathan C. Myers + Paolo Carlini + + * include/bits/fstream.tcc (setbuf): Allow (__s, 1) too, + simply equivalent to the unbuffered case (0, 0) as far as + _M_buf_size is concerned. + 2003-06-18 Andreas Jaeger * testsuite/Makefile.am (new-abi-baseline): Create baseline diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 908cc7567af..c0ef882422a 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -429,15 +429,16 @@ namespace std { if (!this->is_open() && __s == 0 && __n == 0) this->_M_buf_size = 1; - else if (__s && __n > 1) + else if (__s && __n >= 1) { // This is implementation-defined behavior, and assumes that - // an external char_type array of length (__s + __n) exists - // and has been pre-allocated. If this is not the case, - // things will quickly blow up. The length argument __n must - // be greater than 1 because __n - 1 positions will be used - // for the get and put areas, and 1 position is needed to - // host the overflow char of a full put area. + // an external char_type array of length __n exists and has + // been pre-allocated. If this is not the case, things will + // quickly blow up. When __n > 1, __n - 1 positions will be + // used for the get area, __n - 1 for the put area and 1 + // position to host the overflow char of a full put area. + // When __n == 1, 1 position will be used for the get area + // and 0 for the put area, as in the unbuffered case above. // Step 1: Destroy the current internal array. _M_destroy_internal_buffer(); -- 2.30.2