diff --git a/skeletons/NativeReal.c b/skeletons/NativeReal.c
index 594bdb5f55ac81bb11ddde3a6b960670af6e3bf0..810d510b5509490c75c63cb5bc185f3233778e6a 100644
--- a/skeletons/NativeReal.c
+++ b/skeletons/NativeReal.c
@@ -127,6 +127,9 @@ NativeReal_encode_der(asn_TYPE_descriptor_t *td, void *ptr,
 	asn_enc_rval_t erval;
 	REAL_t tmp;
 
+	/* Prepare a temporary clean structure */
+	memset(&tmp, 0, sizeof(tmp));
+
 	if(asn_double2REAL(&tmp, Dbl)) {
 		erval.encoded = -1;
 		erval.failed_type = td;
@@ -140,6 +143,10 @@ NativeReal_encode_der(asn_TYPE_descriptor_t *td, void *ptr,
 		assert(erval.structure_ptr == &tmp);
 		erval.structure_ptr = ptr;
 	}
+
+	/* Free possibly allocated members of the temporary structure */
+	asn_DEF_REAL.free_struct(&asn_DEF_REAL, &tmp, 1);
+
 	return erval;
 }