diff options
| author | Mathieu Duponchelle <mathieu@centricular.com> | 2018-02-16 00:45:40 +0100 |
|---|---|---|
| committer | Mathieu Duponchelle <mathieu@centricular.com> | 2018-02-16 17:56:16 +0100 |
| commit | 26b7fc3fee55870cc944b0f718da8a75c75f4eae (patch) | |
| tree | d0d16a2ff90a6b595416c6896f1a421fd28c11a3 /gi/pygi-boxed.c | |
| parent | d08e244d011121f8ffd5c21437e0f11fe9545bbf (diff) | |
| download | pygobject-26b7fc3fee55870cc944b0f718da8a75c75f4eae.tar.gz | |
Revert "Revert "pygi-boxed: make in-place copy safer""
This reverts commit 700c785367975995d24a8ffd00b2aa028ccf77e8.
Diffstat (limited to 'gi/pygi-boxed.c')
| -rw-r--r-- | gi/pygi-boxed.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gi/pygi-boxed.c b/gi/pygi-boxed.c index fa690bb3..599d6d3e 100644 --- a/gi/pygi-boxed.c +++ b/gi/pygi-boxed.c @@ -42,6 +42,8 @@ boxed_del (PyGIBoxed *self) if ( ( (PyGBoxed *) self)->free_on_dealloc && boxed != NULL) { if (self->slice_allocated) { g_slice_free1 (self->size, boxed); + self->slice_allocated = FALSE; + self->size = 0; } else { g_type = pyg_type_from_object ( (PyObject *) self); g_boxed_free (g_type, boxed); @@ -203,7 +205,11 @@ void _pygi_boxed_copy_in_place (PyGIBoxed *self) { PyGBoxed *pygboxed = (PyGBoxed *)self; - gpointer copy = g_boxed_copy (pygboxed->gtype, pyg_boxed_get_ptr (self)); + gpointer ptr = pyg_boxed_get_ptr (self); + gpointer copy = NULL; + + if (ptr) + copy = g_boxed_copy (pygboxed->gtype, ptr); boxed_del (self); pyg_boxed_set_ptr (pygboxed, copy); |
