Skip to content

dbRegionGroupItr::reverse wrong for double-linked list #8938

@povik

Description

@povik

Describe the bug

The following code updates the next pointer and misses to update the prev pointer

void dbRegionGroupItr::reverse(dbObject* parent)
{
  // User Code Begin reverse
  _dbRegion* _parent = (_dbRegion*) parent;
  uint id = _parent->groups_;
  uint list = 0;

  while (id != 0) {
    _dbGroup* _child = _group_tbl->getPtr(id);
    uint n = _child->region_next_;
    _child->region_next_ = list;
    list = id;
    id = n;
  }
  _parent->groups_ = list;
  // User Code End reverse
}

See the two pointers on _dbGroup:

  dbId<_dbGroup> region_next_;
  dbId<_dbGroup> region_prev_;

Expected Behavior

Proper reversal of double-linked list

Environment

.

To Reproduce

.

Relevant log output

Screenshots

No response

Additional Context

No response

Metadata

Metadata

Assignees

Labels

odbOpenDB

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions