summaryrefslogtreecommitdiff
path: root/gcc/varray.c
diff options
context:
space:
mode:
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-13 02:43:16 +0000
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-13 02:43:16 +0000
commit17ee7790ebfac94e22da60c8d4618acb90b11bbf (patch)
tree9b6873aeaaf57603e96839aaac2b6634121b7cfb /gcc/varray.c
parent282b8eed94ece927ed51e3a240360a046bc9b311 (diff)
downloadgcc-17ee7790ebfac94e22da60c8d4618acb90b11bbf.tar.gz
* varray.h (VARRAY_POP): Add checking variant, aborts on underflow.
(VARRAY_TOP): Use VARRAY_CHECK so the access is bounds-checked. * varray.c: No need to prototype error. (varray_check_failed): Wrap long string onto two lines. (varray_underflow): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75786 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/varray.c')
-rw-r--r--gcc/varray.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/varray.c b/gcc/varray.c
index aca4b6bccf4..b748d438e9a 100644
--- a/gcc/varray.c
+++ b/gcc/varray.c
@@ -118,15 +118,22 @@ varray_clear (varray_type va)
#if defined ENABLE_CHECKING && (GCC_VERSION >= 2007)
-extern void error (const char *, ...) ATTRIBUTE_PRINTF_1;
-
void
varray_check_failed (varray_type va, size_t n, const char *file, int line,
const char *function)
{
- internal_error ("virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d",
+ internal_error ("virtual array %s[%lu]: element %lu out of bounds "
+ "in %s, at %s:%d",
va->name, (unsigned long) va->num_elements, (unsigned long) n,
function, trim_filename (file), line);
}
+void
+varray_underflow (varray_type va, const char *file, int line,
+ const char *function)
+{
+ internal_error ("underflowed virtual array %s in %s, at %s:%d",
+ va->name, function, trim_filename (file), line);
+}
+
#endif