diff options
Diffstat (limited to 'libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch')
-rw-r--r-- | libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch b/libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch new file mode 100644 index 0000000000..c2109dc3f6 --- /dev/null +++ b/libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch @@ -0,0 +1,159 @@ +From: Richard Kreckel <kreckel@ginac.de> +Date: Sun, 18 Mar 2012 23:35:03 +0000 (+0100) +Subject: Avoid input stream fail state when reading number at EOF. +X-Git-Url: http://www.ginac.de/CLN/cln.git/?p=cln.git;a=commitdiff_plain;h=4985c8a7895076df62758466c86cd1bc9df10438 + +Avoid input stream fail state when reading number at EOF. + +istream::get() puts the stream in fail state when trying to read at +EOF. This is best avoided by first peek()ing what is available. +--- + +diff --git a/README b/README +index 7de3f55..d445d55 100644 +--- a/README ++++ b/README +@@ -1,8 +1,8 @@ + Class Library for Numbers + + Copyright (c) Bruno Haible 1988-2008 +-Copyright (c) Richard Kreckel 2000-2009 +-Copyright (c) Alexei Sheplyakov 2008 ++Copyright (c) Richard Kreckel 2000-2012 ++Copyright (c) Alexei Sheplyakov 2008-2010 + + GPL + +diff --git a/doc/cln.texi b/doc/cln.texi +index 354cacc..d5ed502 100644 +--- a/doc/cln.texi ++++ b/doc/cln.texi +@@ -36,7 +36,7 @@ Published by Bruno Haible, @code{<haible@@clisp.cons.org>} and + Richard B. Kreckel, @code{<kreckel@@ginac.de>}. + + Copyright (C) Bruno Haible 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008. +-Copyright (C) Richard B. Kreckel 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011. ++Copyright (C) Richard B. Kreckel 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012. + Copyright (C) Alexei Sheplyakov 2008, 2010. + + Permission is granted to make and distribute verbatim copies of +diff --git a/src/base/cl_free.cc b/src/base/cl_free.cc +index ccda8af..a829aa2 100644 +--- a/src/base/cl_free.cc ++++ b/src/base/cl_free.cc +@@ -34,8 +34,8 @@ void cl_free_heap_object (cl_heap* pointer) + static const char * copyright_notice[] = { + " \n" + "Copyright (c) Bruno Haible 1988-2008 \n" +- "Copyright (c) Richard Kreckel 2000-2009 \n" +- "Copyright (c) Alexei Sheplyakov 2008 \n" ++ "Copyright (c) Richard Kreckel 2000-2012 \n" ++ "Copyright (c) Alexei Sheplyakov 2008-2010 \n" + " \n" + "This program is free software; you can redistribute it and/or modify\n" + "it under the terms of the GNU General Public License as published by\n" +diff --git a/src/complex/input/cl_N_read_stream.cc b/src/complex/input/cl_N_read_stream.cc +index 139af04..fc207aa 100644 +--- a/src/complex/input/cl_N_read_stream.cc ++++ b/src/complex/input/cl_N_read_stream.cc +@@ -91,13 +91,10 @@ const cl_N read_complex (std::istream& stream, const cl_read_flags& flags) + goto syntax1; + loop { + buffer.push(c); +- c = stream.get(); +- if (stream.eof() || stream.fail()) +- break; +- if (!number_char_p(c)) { +- stream.putback(c); ++ c = stream.peek(); // Avoid fail state on EOF. ++ if (stream.eof() || stream.fail() || !number_char_p(c)) + break; +- } ++ c = stream.get(); + } + done: + // Parse the number. +diff --git a/src/float/input/cl_F_read_stream.cc b/src/float/input/cl_F_read_stream.cc +index baafc3b..044e4d6 100644 +--- a/src/float/input/cl_F_read_stream.cc ++++ b/src/float/input/cl_F_read_stream.cc +@@ -82,13 +82,10 @@ const cl_F read_float (std::istream& stream, const cl_read_flags& flags) + goto syntax1; + loop { + buffer.push(c); +- c = stream.get(); +- if (stream.eof() || stream.fail()) +- break; +- if (!number_char_p(c)) { +- stream.putback(c); ++ c = stream.peek(); // Avoid fail state on EOF. ++ if (stream.eof() || stream.fail() || !number_char_p(c)) + break; +- } ++ c = stream.get(); + } + // Parse the number. + return read_float(flags, +diff --git a/src/integer/input/cl_I_read_stream.cc b/src/integer/input/cl_I_read_stream.cc +index 227d845..b242ae7 100644 +--- a/src/integer/input/cl_I_read_stream.cc ++++ b/src/integer/input/cl_I_read_stream.cc +@@ -82,13 +82,10 @@ const cl_I read_integer (std::istream& stream, const cl_read_flags& flags) + goto syntax1; + loop { + buffer.push(c); +- c = stream.get(); +- if (stream.eof() || stream.fail()) +- break; +- if (!number_char_p(c)) { +- stream.putback(c); ++ c = stream.peek(); // Avoid fail state on EOF. ++ if (stream.eof() || stream.fail() || !number_char_p(c)) + break; +- } ++ c = stream.get(); + } + // Parse the number. + return read_integer(flags, +diff --git a/src/rational/input/cl_RA_read_stream.cc b/src/rational/input/cl_RA_read_stream.cc +index bba1d03..9e5f4f6 100644 +--- a/src/rational/input/cl_RA_read_stream.cc ++++ b/src/rational/input/cl_RA_read_stream.cc +@@ -83,13 +83,10 @@ const cl_RA read_rational (std::istream& stream, const cl_read_flags& flags) + goto syntax1; + loop { + buffer.push(c); +- c = stream.get(); +- if (stream.eof() || stream.fail()) +- break; +- if (!number_char_p(c)) { +- stream.putback(c); ++ c = stream.peek(); // Avoid fail state on EOF. ++ if (stream.eof() || stream.fail() || !number_char_p(c)) + break; +- } ++ c = stream.get(); + } + // Parse the number. + return read_rational(flags, +diff --git a/src/real/input/cl_R_read_stream.cc b/src/real/input/cl_R_read_stream.cc +index 56b01d3..c032eee 100644 +--- a/src/real/input/cl_R_read_stream.cc ++++ b/src/real/input/cl_R_read_stream.cc +@@ -82,13 +82,10 @@ const cl_R read_real (std::istream& stream, const cl_read_flags& flags) + goto syntax1; + loop { + buffer.push(c); +- c = stream.get(); +- if (stream.eof() || stream.fail()) +- break; +- if (!number_char_p(c)) { +- stream.putback(c); ++ c = stream.peek(); // Avoid fail state on EOF. ++ if (stream.eof() || stream.fail() || !number_char_p(c)) + break; +- } ++ c = stream.get(); + } + // Parse the number. + return read_real(flags, |