diff options
-rw-r--r-- | generator/generator_erlang.ml | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/generator/generator_erlang.ml b/generator/generator_erlang.ml index a11c71c6..31561279 100644 --- a/generator/generator_erlang.ml +++ b/generator/generator_erlang.ml @@ -300,8 +300,9 @@ extern void free_strings (char **r); pr " else\n"; pr " %s = erl_iolist_to_string (ARG (%d));\n" n i | BufferIn n -> - pr " size_t %s_size = erl_iolist_length (ARG (%d));\n" n i; - pr " char *%s = erl_iolist_to_string (ARG (%d));\n" n i + pr " ETERM *%s_bin = erl_iolist_to_binary (ARG (%d));\n" n i; + pr " const void *%s = ERL_BIN_PTR (%s_bin);\n" n n; + pr " size_t %s_size = ERL_BIN_SIZE (%s_bin);\n" n n | StringList n | DeviceList n -> pr " char **%s = get_string_list (ARG (%d));\n" n i | Bool n -> @@ -380,11 +381,11 @@ extern void free_strings (char **r); List.iter ( function | Pathname n | Device n | Dev_or_Path n | String n | OptString n - | FileIn n | FileOut n | BufferIn n | Key n -> + | FileIn n | FileOut n | Key n -> pr " free (%s);\n" n | StringList n | DeviceList n -> pr " free_strings (%s);\n" n; - | Bool _ | Int _ | Int64 _ | Pointer _ -> () + | Bool _ | Int _ | Int64 _ | Pointer _ | BufferIn _ -> () ) args; List.iter ( function |