1408. Allow recycling of pointers after undeclare_no_pointers

Section: 23.10.5 [util.dynamic.safety] Status: C++11 Submitter: BSI Opened: 2010-08-25 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [util.dynamic.safety].

View all issues with C++11 status.

Discussion:

Addresses GB-103

The precondition to calling declare_no_pointers is that no bytes in the range "have been previously registered" with this call. As written, this precondition includes bytes in ranges, even after they have been explicitly unregistered with a later call to undeclare_no_pointers.

Proposed resolution:

Update 23.10.5 [util.dynamic.safety] p.9:

void declare_no_pointers(char *p, size_t n);

9 Requires: No bytes in the specified range have been previously registeredare currently registered with declare_no_pointers(). If the specified range is in an allocated object, then it must be entirely within a single allocated object. The object must be live until the corresponding undeclare_no_pointers() call. [..]