fix: harden callback safety, SlideAnchor guards, and easing validation#52
Merged
fix: harden callback safety, SlideAnchor guards, and easing validation#52
Conversation
- SlideAnchor now errors when called without an active animation instead of silently falling through to a no-op UpdateAnchor path - SlideAnchor validates duration is a positive number, preventing division-by-zero/nil in the OnUpdate slide interpolation - Wrap Animate onFinished and queue-level onFinished callbacks in pcall + geterrorhandler, matching the existing per-step pattern - RegisterAnimation validates cubic-bezier easing table shape (4 numeric values) and rejects non-string/non-table easing types
There was a problem hiding this comment.
Pull request overview
This PR hardens the animation library's robustness by adding critical validation and error handling for callbacks, slide operations, and easing specifications. These changes prevent runtime errors that could crash the animation engine or cause silent failures.
Changes:
- Wrapped all user-facing
onFinishedcallbacks inpcall+geterrorhandlerto prevent callback errors from crashing the OnUpdate loop or queue processing - Made
SlideAnchorrequire an active animation and validate duration is a positive number, preventing division-by-zero errors in slide interpolation - Added comprehensive validation for cubic-bezier easing tables in
RegisterAnimation, ensuring they have exactly 4 numeric values before usage
Xerrion
pushed a commit
that referenced
this pull request
Feb 24, 2026
🤖 I have created a release *beep* *boop* --- ## [3.5.5](3.5.4...3.5.5) (2026-02-24) ### Bug Fixes * apply initial keyframe immediately in Animate() to prevent frame overlap ([#48](#48)) ([b5ea1d2](b5ea1d2)) * harden callback safety, SlideAnchor guards, and easing validation ([#52](#52)) ([bf71c6a](bf71c6a)) * prevent anchor drift when animations complete with an onFinished callback ([#47](#47)) ([e4a9d04](e4a9d04)) ### Documentation * add bug report and feature request issue templates ([#53](#53)) ([ec638f6](ec638f6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
instead of silently falling through to a no-op UpdateAnchor path
division-by-zero/nil in the OnUpdate slide interpolation
pcall + geterrorhandler, matching the existing per-step pattern
numeric values) and rejects non-string/non-table easing types