@@ -30,7 +30,7 @@ template <typename CLASS>
3030template <typename T>
3131typename AttributeProxyPolicy<CLASS>::AttributeProxy&
3232AttributeProxyPolicy<CLASS>::AttributeProxy::operator =(const T& rhs) {
33- set ( wrap (rhs) );
33+ set (Shield<SEXP>( wrap (rhs)) );
3434 return *this ;
3535}
3636
@@ -61,7 +61,7 @@ template <typename CLASS>
6161template <typename T>
6262typename NamesProxyPolicy<CLASS>::NamesProxy&
6363NamesProxyPolicy<CLASS>::NamesProxy::operator =(const T& rhs) {
64- set ( wrap (rhs) );
64+ set (Shield<SEXP>( wrap (rhs)) );
6565 return *this ;
6666}
6767
@@ -82,7 +82,7 @@ template <typename CLASS>
8282template <typename T>
8383typename SlotProxyPolicy<CLASS>::SlotProxy&
8484SlotProxyPolicy<CLASS>::SlotProxy::operator =(const T& rhs) {
85- set (wrap (rhs));
85+ set (Shield<SEXP>( wrap (rhs) ));
8686 return *this ;
8787}
8888
@@ -97,7 +97,7 @@ template <typename CLASS>
9797template <typename T>
9898typename TagProxyPolicy<CLASS>::TagProxy&
9999TagProxyPolicy<CLASS>::TagProxy::operator =(const T& rhs) {
100- set ( wrap (rhs) );
100+ set (Shield<SEXP>( wrap (rhs)) );
101101 return *this ;
102102}
103103
@@ -128,7 +128,7 @@ template <typename CLASS>
128128template <typename T>
129129typename BindingPolicy<CLASS>::Binding&
130130BindingPolicy<CLASS>::Binding::operator =(const T& rhs) {
131- set (wrap (rhs));
131+ set (Shield<SEXP>( wrap (rhs) ));
132132 return *this ;
133133}
134134
@@ -149,15 +149,15 @@ template <typename CLASS>
149149template <typename T>
150150typename DottedPairProxyPolicy<CLASS>::DottedPairProxy&
151151DottedPairProxyPolicy<CLASS>::DottedPairProxy::operator =(const T& rhs) {
152- set (wrap (rhs));
152+ set (Shield<SEXP>( wrap (rhs) ));
153153 return *this ;
154154}
155155
156156template <typename CLASS>
157157template <typename T>
158158typename DottedPairProxyPolicy<CLASS>::DottedPairProxy&
159159DottedPairProxyPolicy<CLASS>::DottedPairProxy::operator =(const traits::named_object<T>& rhs) {
160- return set (wrap (rhs.object ), rhs.name );
160+ return set (Shield<SEXP>( wrap (rhs.object ) ), rhs.name );
161161}
162162
163163template <typename CLASS>
@@ -184,9 +184,7 @@ template <typename CLASS>
184184template <typename T>
185185typename FieldProxyPolicy<CLASS>::FieldProxy&
186186FieldProxyPolicy<CLASS>::FieldProxy::operator =(const T& rhs) {
187- SEXP tmp = PROTECT (wrap (rhs));
188- set (tmp);
189- UNPROTECT (1 );
187+ set (Shield<SEXP>(wrap (rhs)));
190188 return *this ;
191189}
192190
0 commit comments