0
|
1 |
Exceptions library release 1.01.
|
|
2 |
|
|
3 |
This source code is intended to be compliant with release 1.0 of the EHABI.
|
|
4 |
|
|
5 |
The following defects against the previous (1.0) release have been fixed:
|
|
6 |
|
|
7 |
1) The personality routines were checking handler table entry descriptor
|
|
8 |
ranges using virtual r14 not virtual r15. Consequently if the entry contained
|
|
9 |
two or more descriptors with matching ranges, and the first was a cleanup,
|
|
10 |
subsequent descriptors would incorrectly fail the range check because the
|
|
11 |
cleanup code legitimately corrupted r14 (and hence virtual r14; virtual r15
|
|
12 |
is preserved).
|
|
13 |
|
|
14 |
2) The runtime library would call abort() instead of terminate() under this
|
|
15 |
sequence of events:
|
|
16 |
i) The program installs an unexpected exception handler (set_unexpected(...)).
|
|
17 |
ii) A throw of type T violates a function exception specification, causing
|
|
18 |
unexpected() to be called and the user's handler to be entered.
|
|
19 |
iii) The handler throws another exception of type T.
|
|
20 |
|
|
21 |
3) Type matching when throwing a NULL pointer to pointer to T (any type T)
|
|
22 |
could dereference down the "pointer" chain beginning at location 0 (=NULL),
|
|
23 |
hence possibly accessing any location in memory. |