aboutsummaryrefslogtreecommitdiff
path: root/gcc/vec.h
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2016-12-16 02:57:22 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2016-12-15 19:57:22 -0700
commit7bd1e2edf9a0456062dfd7cbc47b46d93239e997 (patch)
treeb3a49e7547516ee5a15da0050d9f6df9b939377b /gcc/vec.h
parent2ae30b147b8e3c11058d124616301b3a3e27fdd2 (diff)
downloadgcc-7bd1e2edf9a0456062dfd7cbc47b46d93239e997.zip
gcc-7bd1e2edf9a0456062dfd7cbc47b46d93239e997.tar.gz
gcc-7bd1e2edf9a0456062dfd7cbc47b46d93239e997.tar.bz2
PR bootstrap/78817 - stage2 bootstrap failure in vec.h:1613:5: error: argument 1 null where non-null expected after r243661
gcc/ChangeLog: * vec.h (vec<T, va_heap, vl_ptr>::safe_grow_cleared): Assert a pointer is non-null. From-SVN: r243736
Diffstat (limited to 'gcc/vec.h')
-rw-r--r--gcc/vec.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/vec.h b/gcc/vec.h
index aa93411..3877f2d 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -1607,10 +1607,16 @@ inline void
vec<T, va_heap, vl_ptr>::safe_grow_cleared (unsigned len MEM_STAT_DECL)
{
unsigned oldlen = length ();
- size_t sz = sizeof (T) * (len - oldlen);
- safe_grow (len PASS_MEM_STAT);
- if (sz != 0)
- memset (&(address ()[oldlen]), 0, sz);
+ gcc_checking_assert (oldlen <= len);
+
+ if (size_t sz = sizeof (T) * (len - oldlen))
+ {
+ safe_grow (len PASS_MEM_STAT);
+
+ T *p = address ();
+ gcc_assert (p != NULL);
+ memset (p + oldlen, 0, sz);
+ }
}