@@ -176,6 +176,7 @@ export default {
176
176
// first/last element and give the actual value of j/i
177
177
let cur_i_too_high ;
178
178
let cur_j_too_low ;
179
+ let tmp_j = cur_j ; // used to determine context later
179
180
if ( cur_i === A . length ) {
180
181
cur_i = undefined ;
181
182
cur_i_too_high = A . length - 1 ;
@@ -224,10 +225,11 @@ export default {
224
225
// init, before partition
225
226
highlight ( vis , cur_i )
226
227
highlight ( vis , cur_j )
227
- } else if ( cur_i !== undefined && cur_j === undefined && prev_i !== undefined ) {
228
+ } else if ( cur_i !== undefined && tmp_j === undefined && prev_i !== undefined ) {
228
229
// just before first recursive call
229
230
unhighlight ( vis , prev_i )
230
- unhighlight ( vis , prev_j )
231
+ if ( prev_j >= 0 ) // might have fallen off array
232
+ unhighlight ( vis , prev_j )
231
233
} else if ( checkingLeft ) {
232
234
if ( prev_i !== undefined && prev_i !== cur_j )
233
235
unhighlight ( vis , prev_i )
@@ -236,8 +238,9 @@ export default {
236
238
updateBinary ( vis , arr [ cur_i ] )
237
239
} else {
238
240
if ( prev_j !== undefined && prev_j !== cur_i )
239
- unhighlight ( vis , prev_j )
240
- highlight ( vis , cur_j )
241
+ unhighlight ( vis , prev_j ) ;
242
+ if ( cur_j !== undefined ) // might have fallen off array
243
+ highlight ( vis , cur_j ) ;
241
244
if ( arr && cur_j )
242
245
updateBinary ( vis , arr [ cur_j ] )
243
246
}
0 commit comments