This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[Patch] More redundant NULL pointer checks
- From: Paolo Carlini <pcarlini at unitus dot it>
- To: libstdc++ at gcc dot gnu dot org
- Date: Sat, 19 Apr 2003 18:58:14 +0200
- Subject: [Patch] More redundant NULL pointer checks
Hi,
the below, which I consider almost obvious in the light of
the good acceptance of the previous one, completes the work
for stringstreams. Some constification in this case too.
Will wait one day, then commit.
Paolo.
//////////
2003-04-19 Paolo Carlini <pcarlini at unitus dot it>
* include/bits/sstream.tcc (pbackfail): Remove redundant
NULL pointer check from test involving _M_in_*.
(overflow, seekoff, seekpos): Const qualify bool variables.
* include/std/std_sstream.h (underflow): Remove redundant
NULL pointer check from test involving _M_in_*.
(_M_really_sync): Const qualify bool variables.
* include/std/std_streambuf.h (sgetc): Remove redundant
variable.
diff -urN libstdc++-v3-orig/include/bits/sstream.tcc libstdc++-v3/include/bits/sstream.tcc
--- libstdc++-v3-orig/include/bits/sstream.tcc 2003-04-12 21:21:34.000000000 +0200
+++ libstdc++-v3/include/bits/sstream.tcc 2003-04-19 18:40:17.000000000 +0200
@@ -47,8 +47,9 @@
pbackfail(int_type __c)
{
int_type __ret = traits_type::eof();
- bool __testeof = traits_type::eq_int_type(__c, traits_type::eof());
- bool __testpos = this->_M_in_cur && this->_M_in_beg < this->_M_in_cur;
+ const bool __testeof =
+ traits_type::eq_int_type(__c, traits_type::eof());
+ const bool __testpos = this->_M_in_beg < this->_M_in_cur;
// Try to put back __c into input sequence in one of three ways.
// Order these tests done in is unspecified by the standard.
@@ -80,11 +81,12 @@
basic_stringbuf<_CharT, _Traits, _Alloc>::
overflow(int_type __c)
{
- bool __testout = this->_M_mode & ios_base::out;
+ const bool __testout = this->_M_mode & ios_base::out;
if (__builtin_expect(!__testout, false))
return traits_type::eof();
- bool __testeof = traits_type::eq_int_type(__c, traits_type::eof());
+ const bool __testeof =
+ traits_type::eq_int_type(__c, traits_type::eof());
if (__builtin_expect(__testeof, false))
return traits_type::not_eof(__c);
@@ -94,7 +96,7 @@
// suit particular needs.
__size_type __len = std::max(__size_type(_M_string.capacity() + 1),
__size_type(512));
- bool __testput = this->_M_out_cur < this->_M_out_end;
+ const bool __testput = this->_M_out_cur < this->_M_out_end;
if (__builtin_expect(!__testput && __len > _M_string.max_size(), false))
return traits_type::eof();
@@ -123,7 +125,7 @@
pos_type __ret = pos_type(off_type(-1));
bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
- bool __testboth = __testin && __testout && __way != ios_base::cur;
+ const bool __testboth = __testin && __testout && __way != ios_base::cur;
__testin &= !(__mode & ios_base::out);
__testout &= !(__mode & ios_base::in);
@@ -189,8 +191,8 @@
off_type __pos = __sp; // Use streamoff operator to do conversion.
char_type* __beg = NULL;
char_type* __end = NULL;
- bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
- bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
+ const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0;
+ const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0;
// NB: Ordered.
bool __testposi = false;
diff -urN libstdc++-v3-orig/include/std/std_sstream.h libstdc++-v3/include/std/std_sstream.h
--- libstdc++-v3-orig/include/std/std_sstream.h 2003-04-12 21:21:34.000000000 +0200
+++ libstdc++-v3/include/std/std_sstream.h 2003-04-19 18:10:45.000000000 +0200
@@ -190,7 +190,7 @@
virtual int_type
underflow()
{
- if (this->_M_in_cur && this->_M_in_cur < this->_M_in_end)
+ if (this->_M_in_cur < this->_M_in_end)
return traits_type::to_int_type(*gptr());
else
return traits_type::eof();
@@ -260,8 +260,8 @@
virtual void
_M_really_sync(char_type* __base, __size_type __i, __size_type __o)
{
- bool __testin = this->_M_mode & ios_base::in;
- bool __testout = this->_M_mode & ios_base::out;
+ const bool __testin = this->_M_mode & ios_base::in;
+ const bool __testout = this->_M_mode & ios_base::out;
__size_type __len = _M_string.size();
this->_M_buf = __base;
diff -urN libstdc++-v3-orig/include/std/std_streambuf.h libstdc++-v3/include/std/std_streambuf.h
--- libstdc++-v3-orig/include/std/std_streambuf.h 2003-04-19 13:28:45.000000000 +0200
+++ libstdc++-v3/include/std/std_streambuf.h 2003-04-19 18:23:25.000000000 +0200
@@ -452,12 +452,10 @@
int_type
sgetc()
{
- int_type __ret;
if (_M_in_cur < _M_in_end)
- __ret = traits_type::to_int_type(*(this->gptr()));
+ return traits_type::to_int_type(*(this->gptr()));
else
- __ret = this->underflow();
- return __ret;
+ return this->underflow();
}
/**