boost::python handle& operator=() is not implemented correctly
オープン
- 主要言語
- C++
- スター
- 537
- フォーク
- 223
- 平均マージ
- 11時間 22分
- マージ済み PR(30日)
- 2
説明
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.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。