Skip to content

checkIndexBounds off by 1 validation #650

@davidnx

Description

@davidnx

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

warning(
index >= 0 && index <= childrenCount,
`react-swipeable-view: the new index: ${index} is out of bounds: [0-${childrenCount}].`,
);

  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions