diff options
author | Damien George <damien.p.george@gmail.com> | 2014-10-22 01:10:53 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-10-22 01:10:53 +0100 |
commit | 3e42570538b46d680e796136ff441ae7b8a8fac5 (patch) | |
tree | 3284f4e3d506cdea74e54f056ff7eaddbb73659e /stmhal/modwiznet5k.c | |
parent | 481d714bd56e0173668b249760e9cea8fce9b04f (diff) |
stmhal: Change cc3k.recv to only make 1 call to underlying recv().
Also make cc3k.send and cc3k.recv independent functions (not wrapped by
stream write/read). Also make wiznet5k.recv more memory efficient.
This might address issue #920.
Diffstat (limited to 'stmhal/modwiznet5k.c')
-rw-r--r-- | stmhal/modwiznet5k.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/stmhal/modwiznet5k.c b/stmhal/modwiznet5k.c index e4f0206dc..0709371da 100644 --- a/stmhal/modwiznet5k.c +++ b/stmhal/modwiznet5k.c @@ -415,12 +415,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(wiznet5k_socket_send_obj, wiznet5k_socket_send) STATIC mp_obj_t wiznet5k_socket_recv(mp_obj_t self_in, mp_obj_t len_in) { wiznet5k_socket_obj_t *self = self_in; mp_int_t len = mp_obj_get_int(len_in); - uint8_t *buf = m_new(uint8_t, len); + byte *buf; + mp_obj_t ret_obj = mp_obj_str_builder_start(&mp_type_bytes, len, &buf); mp_int_t ret = WIZCHIP_EXPORT(recv)(self->sn, buf, len); check_sock_return_value(ret); - mp_obj_t ret_buf = mp_obj_new_bytes(buf, ret); - m_del(uint8_t, buf, len); - return ret_buf; + return mp_obj_str_builder_end_with_len(ret_obj, len); } STATIC MP_DEFINE_CONST_FUN_OBJ_2(wiznet5k_socket_recv_obj, wiznet5k_socket_recv); |