Skip to content

Commit 9177d22

Browse files
committed
odb: Fix group removal in region destroy
Since the loop body wasn't changing `_region->groups_` the loop got stuck on the first element and never progressed past it. This hang can be reproduced with: set block [ord::get_db_block] set foo_region [odb::dbRegion_create $block foo_region] set foo_group [odb::dbGroup_create $foo_region foo_group] odb::dbRegion_destroy $foo_region Signed-off-by: Martin Povišer <[email protected]>
1 parent 118204e commit 9177d22

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

src/odb/src/db/dbRegion.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -350,10 +350,8 @@ void dbRegion::destroy(dbRegion* region_)
350350
dbSet<dbGroup>::iterator gitr;
351351

352352
for (gitr = groups.begin(); gitr != groups.end(); gitr = groups.begin()) {
353-
_dbGroup* _group = (_dbGroup*) *gitr;
354-
_group->region_ = 0;
355-
_group->region_next_ = 0;
356-
_group->region_prev_ = 0;
353+
dbGroup* group = *gitr;
354+
region_->removeGroup(group);
357355
}
358356

359357
dbProperty::destroyProperties(region);

0 commit comments

Comments
 (0)