THRIFT-3423 First call to thrift_transport:read_exact fails to dispatch correct 
function
Client: Erlang
Patch: Nobuaki Sukegawa

This closes #694


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/97a48988
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/97a48988
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/97a48988

Branch: refs/heads/master
Commit: 97a48988de6a7ac513311456a6f6d3ef7f587639
Parents: 7f404fd
Author: Nobuaki Sukegawa <[email protected]>
Authored: Sat Nov 14 18:49:45 2015 +0900
Committer: Nobuaki Sukegawa <[email protected]>
Committed: Sun Nov 15 14:00:18 2015 +0900

----------------------------------------------------------------------
 lib/erl/src/thrift_transport.erl | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/97a48988/lib/erl/src/thrift_transport.erl
----------------------------------------------------------------------
diff --git a/lib/erl/src/thrift_transport.erl b/lib/erl/src/thrift_transport.erl
index 31dac86..526050f 100644
--- a/lib/erl/src/thrift_transport.erl
+++ b/lib/erl/src/thrift_transport.erl
@@ -101,11 +101,14 @@ when is_integer(Len), Len >= 0 ->
 
 read_exact(Transport = #t_transport{module = Module}, Len)
 when is_integer(Len), Len >= 0 ->
-  case erlang:function_exported(Module, read_exact, 2) of
-      true ->
-        {NewState, Result} = Module:read_exact(Transport#t_transport.state, 
Len),
-        {Transport#t_transport{state = NewState}, Result};
-      false -> read(Transport, Len)
+  case lists:keyfind(read_exact, 1, Module:module_info(exports)) of
+    {read_exact, 2} ->
+      io:fwrite("HAS EXACT"),
+      {NewState, Result} = Module:read_exact(Transport#t_transport.state, Len),
+      {Transport#t_transport{state = NewState}, Result};
+    _ ->
+      io:fwrite("~p NO EXACT", [Module]),
+      read(Transport, Len)
   end.
 
 

Reply via email to