diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 469f36d1fa2d89e6cc0d7a568eddde17b265f28a..8e272cef203b4f2d83121b3bef1057fa076d1e47 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2003-02-19  Paolo Carlini  <pcarlini@unitus.it>
+
+	* include/bits/sstream.tcc (overflow): According to
+	27.7.1.3, p5, actual output is performed by sputc(c).
+
 2003-02-19  Phil Edwards  <pme@gcc.gnu.org>
 
 	PR libstdc++/9582
diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc
index 32014bc396e696252da78af5ea66b1ab72cecd99..489f79f20a318f1506775025a598ca4bd4565442 100644
--- a/libstdc++-v3/include/bits/sstream.tcc
+++ b/libstdc++-v3/include/bits/sstream.tcc
@@ -105,9 +105,7 @@ namespace std
 		  this->_M_buf_size = __len;
 		  _M_really_sync(this->_M_in_cur - this->_M_in_beg, 
 				 this->_M_out_cur - this->_M_out_beg);
-		  *this->_M_out_cur = traits_type::to_char_type(__c);
-		  _M_out_cur_move(1);
-		  __ret = __c;
+		  __ret = this->sputc(traits_type::to_char_type(__c));
 		}
 	    }
 	  else