From 16e2d02b6a46a3a701cc7581bab114fa5674e9d9 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Wed, 20 Jul 2011 16:10:35 +0200 Subject: Fix bug where composite types with more then one element would be encoded in reverse --- lib/asn1/c_src/asn1_erl_nif.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/asn1/c_src') diff --git a/lib/asn1/c_src/asn1_erl_nif.c b/lib/asn1/c_src/asn1_erl_nif.c index 721b3dead5..432148295e 100644 --- a/lib/asn1/c_src/asn1_erl_nif.c +++ b/lib/asn1/c_src/asn1_erl_nif.c @@ -1049,7 +1049,10 @@ int ber_encode(ErlNifEnv *env, ERL_NIF_TERM term, mem_chunk_t **curr, unsigned i ERL_NIF_TERM head, tail; unsigned int tmp_cnt; - if (!enif_get_list_cell(env, tv[1], &head, &tail)) { + if(!enif_make_reverse_list(env, tv[1], &head)) + return ASN1_ERROR; + + if (!enif_get_list_cell(env, head, &head, &tail)) { if (enif_is_empty_list(env, tv[1])) { *((*curr)->curr) = 0; (*curr)->curr -= 1; -- cgit v1.2.3