summaryrefslogtreecommitdiff
path: root/libgfortran/io
diff options
context:
space:
mode:
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-15 20:02:58 +0000
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-15 20:02:58 +0000
commit6cbaf5591bb3d441f5b159797d6d60ae85f90f44 (patch)
tree7dab0a0f3b00357fe532baef7d039ca7f882b94c /libgfortran/io
parentbd9c6afef4fdabb5d8566dacdcdaeb80b3a55acb (diff)
downloadgcc-6cbaf5591bb3d441f5b159797d6d60ae85f90f44.tar.gz
2008-06-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/36515 * libgfortran.h (compile_options_t): Add int range_check to structure. * runtime/compile_options.c (set_options): Add range_check option. (init_compile_options): Likewise. *io/read.c (read_decimal): Change overflow checks to include range_check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136822 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/io')
-rw-r--r--libgfortran/io/read.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c
index 11a1ac018f7..cb88933bf97 100644
--- a/libgfortran/io/read.c
+++ b/libgfortran/io/read.c
@@ -428,13 +428,13 @@ read_decimal (st_parameter_dt *dtp, const fnode *f, char *dest, int length)
if (c < '0' || c > '9')
goto bad;
- if (value > maxv_10)
+ if (value > maxv_10 && compile_options.range_check == 1)
goto overflow;
c -= '0';
value = 10 * value;
- if (value > maxv - c)
+ if (value > maxv - c && compile_options.range_check == 1)
goto overflow;
value += c;
}