boost::python handle& operator=() is not implemented correctly
Abierto
- Lenguaje dominante
- C++
- Estrellas
- 537
- Forks
- 223
- Merge medio
- 11 h 22 min
- PR fusionados (30 d)
- 2
Descripción
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.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.