fix(android): coerce string width/height in ImageAssetOptions #10862
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.
Problem
On Android,
ImageAssetOptions.width/heightprovided as strings like"300"were parsed withoptInt(), which resolves string values to0. This caused oversized decode/scale operations that could crash older Android APIs (e.g., API 22) with "bitmap size exceeds 32 bits" error.Fixes #6289
Changes
Android (
packages/ui-mobile-base/android/widgets/src/main/java/org/nativescript/widgets/Utils.java)parsePositiveInt(JSONObject, String)method to safely parse numeric strings and numbersloadImageAsyncto useparsePositiveIntforwidth/heightoptions instead ofoptInt0for default sizingTypeScript (
packages/core/image-asset/image-asset-common.ts)normalizeImageAssetOptions()to coerce string dimensions to positive integerstoPositiveInt()helper for robust string-to-number conversionImageAssetBase.optionssetter to normalize optionsgetRequestedImageSize()to use normalized optionsTests (
packages/core/image-asset/__tests__/image-asset-options.spec.ts)Verification
{ width: "300", height: "300" }no longer crashes on Android API 22Backwards Compatibility
width/heightoptions unchanged