Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > 3d84a74fd548984e423738b4fc15fe66 > files > 2

erlang-amf-0-0.3.20100908git27329144.fc13.src.rpm

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