boostorg / boostorg/python

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

Ouverte
#190 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
537
Forks
223
Merge moyen
11 h 22 min
PR mergées (30 j)
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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.