Mercurial > hg > octave-lojdl
changeset 7709:fa41af732801
octave_scan_1: fix reading of hex numbers
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 14 Apr 2008 13:27:21 -0400 |
parents | b42abee70a98 |
children | 9a6012d7cbb7 |
files | src/ChangeLog src/oct-stream.cc |
diffstat | 2 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-04-14 Jaroslav Hajek <highegg@gmail.com> + + * oct-stream.cc (octave_scan_1): Ensure digit following X is hex + digit before reading number as hex. + 2008-04-14 John W. Eaton <jwe@octave.org> * file-io.cc (Ffread): Allow SKIP arg to be omitted.
--- a/src/oct-stream.cc +++ b/src/oct-stream.cc @@ -26,6 +26,7 @@ #endif #include <cassert> +#include <cctype> #include <cstring> #include <iomanip> @@ -1066,14 +1067,18 @@ { if (c1 == '0') { - int c2 = is.get (); + int c2 = is.peek (); if (c2 == 'x' || c2 == 'X') - is >> std::hex >> ref >> std::dec; + { + is.ignore (); + if (std::isxdigit (is.peek ())) + is >> std::hex >> ref >> std::dec; + else + ref = 0; + } else { - is.putback (c2); - if (c2 == '0' || c2 == '1' || c2 == '2' || c2 == '3' || c2 == '4' || c2 == '5' || c2 == '6' || c2 == '7')