aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Elliston <bje@au.ibm.com>2007-02-01 04:04:34 +0000
committerBen Elliston <bje@gcc.gnu.org>2007-02-01 15:04:34 +1100
commit20fdc40c5acca41e679fe7e789d0313bd6d932da (patch)
treef479c94d167e852161402775e4b9df9cf1ef441a
parentb818de221c8765e9588cfcb54ac6d6f982fac728 (diff)
downloadgcc-20fdc40c5acca41e679fe7e789d0313bd6d932da.zip
gcc-20fdc40c5acca41e679fe7e789d0313bd6d932da.tar.gz
gcc-20fdc40c5acca41e679fe7e789d0313bd6d932da.tar.bz2
eh_alloc.cc (__cxa_free_exception): Don't refer to the emergency_buffer using `&array[0][0]' notation, use `array'.
* libsupc++/eh_alloc.cc (__cxa_free_exception): Don't refer to the emergency_buffer using `&array[0][0]' notation, use `array'. From-SVN: r121456
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/libsupc++/eh_alloc.cc7
2 files changed, 9 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 2b6b120..1718e5d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-01 Ben Elliston <bje@au.ibm.com>
+
+ * libsupc++/eh_alloc.cc (__cxa_free_exception): Don't refer to the
+ emergency_buffer using `&array[0][0]' notation, use `array'.
+
2007-01-30 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/30571
diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc
index 217a8cd..553c1c1 100644
--- a/libstdc++-v3/libsupc++/eh_alloc.cc
+++ b/libstdc++-v3/libsupc++/eh_alloc.cc
@@ -143,12 +143,13 @@ __cxxabiv1::__cxa_allocate_exception(std::size_t thrown_size) throw()
extern "C" void
__cxxabiv1::__cxa_free_exception(void *vptr) throw()
{
+ char *base = (char *) emergency_buffer;
char *ptr = (char *) vptr;
- if (ptr >= &emergency_buffer[0][0]
- && ptr < &emergency_buffer[0][0] + sizeof (emergency_buffer))
+ if (ptr >= base
+ && ptr < base + sizeof (emergency_buffer))
{
const unsigned int which
- = (unsigned)(ptr - &emergency_buffer[0][0]) / EMERGENCY_OBJ_SIZE;
+ = (unsigned) (ptr - base) / EMERGENCY_OBJ_SIZE;
__gnu_cxx::__scoped_lock sentry(emergency_mutex);
emergency_used &= ~((bitmask_type)1 << which);