File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2089,9 +2089,19 @@ mod _socket {
20892089 msg = msg. with_addr ( & sockaddr) ;
20902090 }
20912091
2092- let buffer_items = vm
2093- . extract_elements_with ( & buffers, Ok )
2094- . map_err ( |_| vm. new_type_error ( "sendmsg() argument 1 must be an iterable" ) ) ?;
2092+ let collect_iterable =
2093+ |obj : & PyObject , msg : & ' static str | -> PyResult < Vec < PyObjectRef > > {
2094+ match vm. extract_elements_with ( obj, Ok ) {
2095+ Ok ( items) => Ok ( items) ,
2096+ Err ( e) if e. fast_isinstance ( vm. ctx . exceptions . type_error ) => {
2097+ Err ( vm. new_type_error ( msg) )
2098+ }
2099+ Err ( e) => Err ( e) ,
2100+ }
2101+ } ;
2102+
2103+ let buffer_items =
2104+ collect_iterable ( & buffers, "sendmsg() argument 1 must be an iterable" ) ?;
20952105 let buffers = buffer_items
20962106 . into_iter ( )
20972107 . map ( |obj| ArgBytesLike :: try_from_object ( vm, obj) )
@@ -2108,9 +2118,8 @@ mod _socket {
21082118
21092119 let control_buf;
21102120 if let OptionalArg :: Present ( ancdata) = ancdata {
2111- let cmsg_fast = vm
2112- . extract_elements_with ( & ancdata, Ok )
2113- . map_err ( |_| vm. new_type_error ( "sendmsg() argument 2 must be an iterable" ) ) ?;
2121+ let cmsg_fast =
2122+ collect_iterable ( & ancdata, "sendmsg() argument 2 must be an iterable" ) ?;
21142123 let cmsgs = cmsg_fast
21152124 . into_iter ( )
21162125 . map ( |item| -> PyResult < ( i32 , i32 , ArgBytesLike ) > {
Original file line number Diff line number Diff line change @@ -44,8 +44,6 @@ fn shell_exec(
4444 * future_features |= code. code . flags & CodeFlags :: FUTURE_MASK ;
4545 let _ = vm. register_code_in_linecache ( & code, source) ;
4646 if empty_line_given || !continuing_block {
47- // We want to execute the full code
48- let _ = vm. register_code_in_linecache ( & code, source) ;
4947 match vm. run_code_obj ( code, scope) {
5048 Ok ( _val) => ShellExecResult :: Ok ,
5149 Err ( err) => ShellExecResult :: PyErr ( err) ,
You can’t perform that action at this time.
0 commit comments