[Ada] Semantics of Delete for fixed strings
commit4962dc441d317b6f28ab4ee3bf6b0d83f7c61837
authorEd Schonberg <schonberg@adacore.com>
Mon, 8 Jul 2019 08:13:25 +0000 (8 08:13 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 8 Jul 2019 08:13:25 +0000 (8 08:13 +0000)
treefdc72c0911cbbc2fbfd602d3fa11004cb5af1854
parent4a0e6ac18f731f41f7ddfa05c370186cd32bef52
[Ada] Semantics of Delete for fixed strings

This patch corrects a bug in the implementation of Delete in an unusual
boundary case: the RM describes the semantics of Delete as equivalent to
that of Replace_String with a null argument. As a result, deleting a
null string that starts past the end of its argument is a noop and must
not raise Index_Error.

2019-07-08  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* libgnat/a-strfix.adb (Delete): The RM describes the semantics
of Delete as equivalent to that of Replace_String with a null
argument. As a result, deleting a null string that starts past
the end of its argument is a noop and must not raise
Index_Error.

gcc/testsuite/

* gnat.dg/fixed_delete.adb: New testcase.

From-SVN: r273205
gcc/ada/ChangeLog
gcc/ada/libgnat/a-strfix.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/fixed_delete.adb [new file with mode: 0644]