Skip to content

Commit 3e2132e

Browse files
committed
fix: Avoid premature release for external pointers
1 parent aeb1895 commit 3e2132e

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

inst/include/cpp11/external_pointer.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,15 @@ class external_pointer {
6666
data_ = safe[Rf_shallow_duplicate](rhs.data_);
6767
}
6868

69-
external_pointer(external_pointer&& rhs) { reset(rhs.release()); }
69+
external_pointer(external_pointer&& rhs) {
70+
data_ = rhs.data_;
71+
rhs.data_ = R_NilValue;
72+
}
7073

71-
external_pointer& operator=(external_pointer&& rhs) noexcept { reset(rhs.release()); }
74+
external_pointer& operator=(external_pointer&& rhs) noexcept {
75+
data_ = rhs.data_;
76+
rhs.data_ = R_NilValue;
77+
}
7278

7379
external_pointer& operator=(std::nullptr_t) noexcept { reset(); };
7480

0 commit comments

Comments
 (0)