react-swipeable-views icon indicating copy to clipboard operation
react-swipeable-views copied to clipboard

checkIndexBounds off by 1 validation

Open davidnx opened this issue 4 years ago • 0 comments

checkIndexBounds is too lenient and allows setting indexes from 0 .. count inclusive, whereas really the only valid values are 0 .. (count-1).

https://github.com/oliviertassinari/react-swipeable-views/blob/a12dd90f63372162bd461f293be1c240fe872ef0/packages/react-swipeable-views-core/src/checkIndexBounds.js#L9-L12

  • [x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior

The warning is only produced after setting index to children.length + 1:

Here is an example warning I see when I set index = 4 having only 3 children:

Warning: react-swipeable-view: the new index: 4 is out of bounds: [0-3].

Expected Behavior

Setting index to exactly children.length should already produce a warning. The warning message should also show the correct range of values.

E.g. setting index to 3 should produce this warning when there are only 3 children:

Warning: react-swipeable-view: the new index: 3 is out of bounds: [0-2].

Steps to Reproduce

This should produce a warning, but it doesn't:

<SwipeableViews index={3}>
  <div>A</div>
  <div>B</div>
  <div>C</div>
</SwipeableViews>

Context

This is a minor dev nuisance, where the lenience of react-swipable-views is potentially allowing a dev to not detect code defects.

Your Environment

Tech Version
react-swipeable-views 0.14.0
React 17.0.2
platform Web

davidnx avatar Jun 27 '21 18:06 davidnx