diff --git a/libasn1fix/asn1fix_bitstring.c b/libasn1fix/asn1fix_bitstring.c
index 5f30ea4f9cf7eeee2fd77771b7759ba70830b214..8cf6b95eb96a726d9f073080a5ce19b321883616 100644
--- a/libasn1fix/asn1fix_bitstring.c
+++ b/libasn1fix/asn1fix_bitstring.c
@@ -229,14 +229,14 @@ asn1f_BS_unparsed_convert(arg_t *arg, asn1p_value_t *value, asn1p_expr_t *ttype)
 			arg->expr->Identifier,
 			arg->expr->_lineno
 		);
-		asn1p_free(asn);
+		asn1p_delete(asn);
 		return -1;
 	}
 
 	bits = aI + 1;	/* Number of bits is more than a last bit position */
 	bitbuf = calloc(1, 1 + ((bits + 7) / 8));
 	if(bitbuf == NULL) {
-		asn1p_free(asn);
+		asn1p_delete(asn);
 		return -1;
 	}
 
@@ -281,7 +281,7 @@ asn1f_BS_unparsed_convert(arg_t *arg, asn1p_value_t *value, asn1p_expr_t *ttype)
 		bitbuf[set_bit_pos>>3] |= 1 << (7-(set_bit_pos % 8));
 	}
 
-	asn1p_free(asn);
+	asn1p_delete(asn);
 	free(value->value.string.buf);
 	value->type = ATV_BITVECTOR;
 	value->value.binary_vector.bits = bitbuf;