equal
deleted
inserted
replaced
|
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. |