From 12397fed94bf07b5e35a75654a7fff5b6350c61b Mon Sep 17 00:00:00 2001 From: Peter Lemenkov <lemenkov@gmail.com> Date: Sun, 31 Oct 2010 16:41:26 +0300 Subject: [PATCH 2/2] Missing BIFs in Erlang/OTP R12B Erlang/OTP R12B has two necessary BIFs absent - atom_to_binary and binary_to_atom. I constructed them from available BIFs. Signed-off-by: Peter Lemenkov <lemenkov@gmail.com> --- src/amf0.erl | 8 ++++---- src/amf3.erl | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/amf0.erl b/src/amf0.erl index c7bd644..ed0d7fe 100644 --- a/src/amf0.erl +++ b/src/amf0.erl @@ -58,7 +58,7 @@ decode(<<?OBJECT, Data/binary>>, Objects) -> Key = gb_trees:size(Objects), Objects1 = gb_trees:insert(Key, {ref, Key}, Objects), {Members0, Objects2, Rest} = decode_members(Data, [], Objects1), - Members1 = [{binary_to_atom(Name, utf8), Val} || {Name, Val} <- Members0], + Members1 = [{list_to_atom(binary_to_list(Name)), Val} || {Name, Val} <- Members0], Object = {object, Members1}, Objects3 = gb_trees:update(Key, Object, Objects2), {Object, Rest, Objects3}; @@ -92,7 +92,7 @@ decode(<<?TYPEDOBJECT, L:16, Class:L/binary, Data/binary>>, Objects) -> Key = gb_trees:size(Objects), Objects1 = gb_trees:insert(Key, {ref, Key}, Objects), {Members0, Objects2, Rest} = decode_members(Data, [], Objects1), - Members1 = [{binary_to_atom(Name, utf8), Val} || {Name, Val} <- Members0], + Members1 = [{list_to_atom(binary_to_list(Name)), Val} || {Name, Val} <- Members0], Object = {object, Class, Members1}, Objects3 = gb_trees:update(Key, Object, Objects2), {Object, Rest, Objects3}; @@ -161,7 +161,7 @@ encode({object, Members} = Object, Objects) -> inline -> Key = gb_trees:size(Objects), Objects1 = gb_trees:insert(Key, Object, Objects), - Members1 = [{atom_to_binary(N, utf8), V} || {N, V} <- Members], + Members1 = [{list_to_binary(atom_to_list(N)), V} || {N, V} <- Members], {Bin, Objects2} = encode_members(Members1, <<>>, Objects1), {<<?OBJECT, Bin/binary>>, Objects2} end; @@ -172,7 +172,7 @@ encode({object, Class, Members} = Object, Objects) -> inline -> Key = gb_trees:size(Objects), Objects1 = gb_trees:insert(Key, Object, Objects), - Members1 = [{atom_to_binary(N, utf8), V} || {N, V} <- Members], + Members1 = [{list_to_binary(atom_to_list(N)), V} || {N, V} <- Members], {Bin, Objects2} = encode_members(Members1, <<>>, Objects1), Bin1 = <<?TYPEDOBJECT, (size(Class)):16, Class/binary,Bin/binary>>, {Bin1, Objects2} diff --git a/src/amf3.erl b/src/amf3.erl index ad0d1cb..27aad2a 100644 --- a/src/amf3.erl +++ b/src/amf3.erl @@ -236,7 +236,7 @@ decode_strings_as_atoms(0, Rest, Strings, Acc) -> {lists:reverse(Acc), Rest, Strings}; decode_strings_as_atoms(N, Data, Strings, Acc) -> {String, Rest, Strings1} = decode_string(Data, Strings), - Atom = binary_to_atom(String, utf8), + Atom = list_to_atom(binary_to_list(String)), decode_strings_as_atoms(N - 1, Rest, Strings1, [Atom | Acc]). %% @doc Decodes an Object. @@ -540,7 +540,7 @@ encode_atoms_as_strings(Atoms, Strings) -> encode_atoms_as_strings([], Acc, Strings) -> {Acc, Strings}; encode_atoms_as_strings([Atom | Rest], Acc, Strings) -> - {Bin, Strings1} = encode_string(atom_to_binary(Atom, utf8), Strings), + {Bin, Strings1} = encode_string(list_to_binary(atom_to_list(Atom)), Strings), encode_atoms_as_strings(Rest, <<Acc/binary, Bin/binary>>, Strings1). %% @doc Inserts String into the reference table unless String is empty. -- 1.7.2.3