summaryrefslogtreecommitdiffhomepage
path: root/include/stc/cbox.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/stc/cbox.h')
-rw-r--r--include/stc/cbox.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/stc/cbox.h b/include/stc/cbox.h
index bcb1b275..a0966fcc 100644
--- a/include/stc/cbox.h
+++ b/include/stc/cbox.h
@@ -77,7 +77,7 @@ typedef i_keyraw _cx_raw;
_cx_deftypes(_c_cbox_types, _cx_self, i_key);
#endif
-// constructors (takes ownsership)
+// constructors (take ownership)
STC_INLINE _cx_self _cx_memb(_init)(void)
{ return c_INIT(_cx_self){NULL}; }
@@ -110,6 +110,9 @@ STC_INLINE _cx_self _cx_memb(_move)(_cx_self* self) {
return ptr;
}
+STC_INLINE _cx_value* _cx_memb(_release)(_cx_self* self)
+ { return _cx_memb(_move)(self).get; }
+
STC_INLINE void _cx_memb(_reset)(_cx_self* self) {
_cx_memb(_drop)(self);
self->get = NULL;
@@ -117,8 +120,7 @@ STC_INLINE void _cx_memb(_reset)(_cx_self* self) {
// take ownership of p
STC_INLINE void _cx_memb(_reset_to)(_cx_self* self, _cx_value* p) {
- if (self->get)
- i_keydrop(self->get);
+ _cx_memb(_drop)(self);
self->get = p;
}