@@ -98,18 +98,15 @@ STATIC mp_obj_t stream_read(uint n_args, const mp_obj_t *args) {
9898 }
9999}
100100
101- STATIC mp_obj_t stream_write (mp_obj_t self_in , mp_obj_t arg ) {
101+ mp_obj_t mp_stream_write (mp_obj_t self_in , const void * buf , mp_uint_t len ) {
102102 struct _mp_obj_base_t * o = (struct _mp_obj_base_t * )self_in ;
103103 if (o -> type -> stream_p == NULL || o -> type -> stream_p -> write == NULL ) {
104104 // CPython: io.UnsupportedOperation, OSError subclass
105105 nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , "Operation not supported" ));
106106 }
107107
108- mp_buffer_info_t bufinfo ;
109- mp_get_buffer_raise (arg , & bufinfo , MP_BUFFER_READ );
110-
111108 int error ;
112- mp_int_t out_sz = o -> type -> stream_p -> write (self_in , bufinfo . buf , bufinfo . len , & error );
109+ mp_int_t out_sz = o -> type -> stream_p -> write (self_in , buf , len , & error );
113110 if (out_sz == -1 ) {
114111 if (is_nonblocking_error (error )) {
115112 // http://docs.python.org/3/library/io.html#io.RawIOBase.write
@@ -125,6 +122,12 @@ STATIC mp_obj_t stream_write(mp_obj_t self_in, mp_obj_t arg) {
125122 }
126123}
127124
125+ STATIC mp_obj_t stream_write_method (mp_obj_t self_in , mp_obj_t arg ) {
126+ mp_buffer_info_t bufinfo ;
127+ mp_get_buffer_raise (arg , & bufinfo , MP_BUFFER_READ );
128+ return mp_stream_write (self_in , bufinfo .buf , bufinfo .len );
129+ }
130+
128131STATIC mp_obj_t stream_readall (mp_obj_t self_in ) {
129132 struct _mp_obj_base_t * o = (struct _mp_obj_base_t * )self_in ;
130133 if (o -> type -> stream_p == NULL || o -> type -> stream_p -> read == NULL ) {
@@ -248,4 +251,4 @@ mp_obj_t mp_stream_unbuffered_iter(mp_obj_t self) {
248251MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mp_stream_read_obj , 1 , 2 , stream_read );
249252MP_DEFINE_CONST_FUN_OBJ_1 (mp_stream_readall_obj , stream_readall );
250253MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (mp_stream_unbuffered_readline_obj , 1 , 2 , stream_unbuffered_readline );
251- MP_DEFINE_CONST_FUN_OBJ_2 (mp_stream_write_obj , stream_write );
254+ MP_DEFINE_CONST_FUN_OBJ_2 (mp_stream_write_obj , stream_write_method );
0 commit comments