Modify

Ticket #2689 (closed Bugs: fixed)

Opened 5 years ago

Last modified 5 years ago

Unordered containers: cache_begin not compatible with auto_unlink

Reported by: andysem Owned by: igaztanaga
Milestone: Boost 1.39.0 Component: intrusive
Version: Boost 1.37.0 Severity: Problem
Keywords: unordered cache_begin auto_unlink Cc:

Description

It looks like using cache_begin< true > option with unordered containers with link_mode< auto_unlink > can lead to subtle crashes in run time. Supposedly, the problem appears when the leading node of the container (the one that is pointed to by begin()) is deleted without explicitly erasing the element from the container. In that case begin() returns an iterator to a non-existing element.

This issue is not highlighted in the docs or checked in the code. It would be great if the container checked this options combination and did not compile in the first place.

Attachments

Change History

comment:1 Changed 5 years ago by igaztanaga

  • Status changed from new to closed
  • Resolution set to fixed
  • Milestone changed from Boost 1.38.0 to Boost 1.39.0

Static assertion added to check it at compile time and also a note in the documentation. Revision 51971 in trunk.

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.