summaryrefslogtreecommitdiff
path: root/libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch')
-rw-r--r--libraries/cln/patches/cln.git-4985c8a7895076df62758466c86cd1bc9df10438.patch159
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,