boostorg / boostorg/python

boost::python handle& operator=() is not implemented correctly

Open
#190 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
537
Forks
223
Avg merge
11h 22m
Merged PRs (30d)
2

Description

The assignment operator for a handle is implemented by first decreasing the reference count of the contained object and then incrementing the one of the right hand side.

```python
python::xdecref(m_p);
m_p = python::xincref(r.m_p);
```

This is not the correct order but should be the other way round, i.e. first incrementing than decrementing. This is also the effect described in the documentation.

```python
python::xincref(r.m_p)
python::xdecref(m_p);
m_p = r.m_p
```

By doing it the current way, self assignment increases the reference count of a potentially already freed object.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.