File tree Expand file tree Collapse file tree 2 files changed +7
-18
lines changed Expand file tree Collapse file tree 2 files changed +7
-18
lines changed Original file line number Diff line number Diff line change @@ -421,13 +421,12 @@ impl PyBytes {
421
421
}
422
422
423
423
#[ pymethod( name = "__mul__" ) ]
424
- fn repeat ( & self , n : isize ) -> PyBytes {
425
- self . inner . repeat ( n) . into ( )
426
- }
427
-
428
424
#[ pymethod( name = "__rmul__" ) ]
429
- fn rmul ( & self , n : isize ) -> PyBytes {
430
- self . repeat ( n)
425
+ fn repeat ( & self , value : isize , vm : & VirtualMachine ) -> PyResult < PyBytes > {
426
+ if value > 0 && self . inner . len ( ) as isize > std:: isize:: MAX / value {
427
+ return Err ( vm. new_overflow_error ( "repeated bytes are too long" . to_owned ( ) ) ) ;
428
+ }
429
+ Ok ( self . inner . repeat ( value) . into ( ) )
431
430
}
432
431
433
432
fn do_cformat (
Original file line number Diff line number Diff line change @@ -332,19 +332,9 @@ impl PyString {
332
332
}
333
333
334
334
#[ pymethod( name = "__mul__" ) ]
335
- fn mul ( & self , multiplier : isize , vm : & VirtualMachine ) -> PyResult < String > {
336
- multiplier
337
- . max ( 0 )
338
- . to_usize ( )
339
- . map ( |multiplier| self . value . repeat ( multiplier) )
340
- . ok_or_else ( || {
341
- vm. new_overflow_error ( "cannot fit 'int' into an index-sized integer" . to_owned ( ) )
342
- } )
343
- }
344
-
345
335
#[ pymethod( name = "__rmul__" ) ]
346
- fn rmul ( & self , val : isize , vm : & VirtualMachine ) -> PyResult < String > {
347
- self . mul ( val , vm )
336
+ fn mul ( & self , value : isize ) -> String {
337
+ self . value . repeat ( value . max ( 0 ) as usize )
348
338
}
349
339
350
340
#[ pymethod( name = "__str__" ) ]
You can’t perform that action at this time.
0 commit comments