Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error-check array shape before computing strides #855

Merged
merged 2 commits into from Dec 3, 2020

Conversation

bluss
Copy link
Member

@bluss bluss commented Dec 3, 2020

Update representation (of StrideShape) to use enum { C, F, Custom(D) } so that we don't
try to compute a C or F stride set until after we have checked the
actual array shape.

This avoids overflow errors (that panic) in places where we expected to
return an error. It was visible as a test failure on 32-bit that long
went undetected because tests didn't run on such platforms before (but
the bug affected all platforms, given sufficiently large inputs).

Also move the Shape, StrideShape types into the shape builder module.
It all calls out for a nicer organization of types that makes
constructors easier to understand for users, but that's an issue for
another time - and it's a breaking change.

Fixes #852

Update StrideShape's representation to use enum { C, F, Custom(D) } so
that we don't try to compute a C or F stride set until after we have
checked the actual array shape.

This avoids overflow errors (that panic) in places where we expected to
return an error. It was visible as a test failure on 32-bit that long
went undetected because tests didn't run on such platforms before (but
the bug affected all platforms, given sufficiently large inputs).

Also move the Shape, StrideShape types into the shape builder module.
It all calls out for a nicer organization of types that makes
constructors easier to understand for users, but that's an issue for
another time - and it's a breaking change.
@bluss bluss merged commit 3a2040d into master Dec 3, 2020
@bluss bluss deleted the checked-shape-strides branch December 3, 2020 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Array::from_shape_vec panics on shapes that are too big for usize on the platform
1 participant