diff options
author | gingold | 2009-06-08 02:02:20 +0000 |
---|---|---|
committer | gingold | 2009-06-08 02:02:20 +0000 |
commit | 52741663129845a55bf7beacd042e42932278839 (patch) | |
tree | ec0da0d2d77a2dab6b494a8417d659eb9a737fda | |
parent | db0dacf3b4a07f26c317d7cda0c6f8882e511f88 (diff) | |
download | ghdl-52741663129845a55bf7beacd042e42932278839.tar.gz ghdl-52741663129845a55bf7beacd042e42932278839.tar.bz2 ghdl-52741663129845a55bf7beacd042e42932278839.zip |
Fix bug #13574, std.textio.read (string) bug
-rw-r--r-- | libraries/std/textio_body.vhdl | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libraries/std/textio_body.vhdl b/libraries/std/textio_body.vhdl index 1809adf..db0e7fe 100644 --- a/libraries/std/textio_body.vhdl +++ b/libraries/std/textio_body.vhdl @@ -1305,9 +1305,17 @@ package body textio is return; end if; if l'left < l'right then + -- Ascending (expected common case). value := l (l'left to l'left + len - 1); trim (l, l'left + len); + elsif l'left = l'right then + -- String of 1 character. We don't know the direction and therefore + -- can't use the code below which does a slice. + value := l.all; + deallocate (l); + l := new string'(""); else + -- Descending. value := l (l'left downto l'left - len + 1); trim (l, l'left - len); end if; |