@@ -65,3 +65,33 @@ for (let ctor of ctors) {
6565 assert . compareArray ( ToNumbers ( lengthTracking ) , [ 2 , 1 , 2 ] ,
6666 ctor . name + " truncated copy backward." ) ;
6767}
68+
69+ for ( let ctor of ctors ) {
70+ const rab = CreateResizableArrayBuffer ( 4 * ctor . BYTES_PER_ELEMENT , 8 * ctor . BYTES_PER_ELEMENT ) ;
71+ const lengthTracking = fillWithIndexes ( new ctor ( rab ) , 4 ) ;
72+ // [0, 1, 2,] 3]
73+ // <=--> dest
74+ // <=-> src
75+ const evil = ( ) => {
76+ rab . resize ( 3 * ctor . BYTES_PER_ELEMENT ) ;
77+ return 2 ;
78+ } ;
79+ lengthTracking . copyWithin ( { valueOf : evil } , 1 ) ;
80+ assert . compareArray ( ToNumbers ( lengthTracking ) , [ 0 , 1 , 1 ] ,
81+ ctor . name + " truncated overlapping copy forward." ) ;
82+ }
83+
84+ for ( let ctor of ctors ) {
85+ const rab = CreateResizableArrayBuffer ( 4 * ctor . BYTES_PER_ELEMENT , 8 * ctor . BYTES_PER_ELEMENT ) ;
86+ const lengthTracking = fillWithIndexes ( new ctor ( rab ) , 4 ) ;
87+ // [0, 1, 2,] 3]
88+ // <=--> src
89+ // <=-> dest
90+ const evil = ( ) => {
91+ rab . resize ( 3 * ctor . BYTES_PER_ELEMENT ) ;
92+ return 2 ;
93+ } ;
94+ lengthTracking . copyWithin ( 1 , { valueOf : evil } ) ;
95+ assert . compareArray ( ToNumbers ( lengthTracking ) , [ 0 , 2 , 2 ] ,
96+ ctor . name + " truncated overlapping copy backward." ) ;
97+ }
0 commit comments