py/stream: ioctl(): Properly support 2-arg form.

This commit is contained in:
Paul Sokolovsky 2016-04-10 13:36:44 +03:00
parent 6c3db26ab7
commit 558fd5d228
1 changed files with 8 additions and 6 deletions

View File

@ -414,13 +414,15 @@ STATIC mp_obj_t stream_ioctl(size_t n_args, const mp_obj_t *args) {
const mp_stream_p_t *stream_p = mp_get_stream_raise(args[0], MP_STREAM_OP_IOCTL);
mp_buffer_info_t bufinfo;
uintptr_t val;
uintptr_t val = 0;
if (n_args > 2) {
if (MP_OBJ_IS_INT(args[2])) {
val = mp_obj_get_int(args[2]);
} else {
mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_READ);
mp_get_buffer_raise(args[2], &bufinfo, MP_BUFFER_WRITE);
val = (uintptr_t)bufinfo.buf;
}
}
int error;
mp_uint_t res = stream_p->ioctl(args[0], mp_obj_get_int(args[1]), val, &error);