You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2018/05/03 11:59:11 UTC
incubator-weex git commit: [WEEX-333][iOS] add protection for
bezierPath contains nan point.
Repository: incubator-weex
Updated Branches:
refs/heads/master cf531a167 -> 9425cc92d
[WEEX-333][iOS] add protection for bezierPath contains nan point.
Bug:333
[WEEX-333][iOS]fix check valid point logic
Bug: 333
close #1144
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/9425cc92
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/9425cc92
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/9425cc92
Branch: refs/heads/master
Commit: 9425cc92d19201b59e240c5d86c6ec7575db6309
Parents: cf531a1
Author: acton393 <zh...@gmail.com>
Authored: Thu May 3 17:58:21 2018 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu May 3 19:58:18 2018 +0800
----------------------------------------------------------------------
ios/sdk/WeexSDK/Sources/Display/UIBezierPath+Weex.m | 16 +++++++++++++---
ios/sdk/WeexSDK/Sources/Utility/WXUtility.h | 9 +++++++++
ios/sdk/WeexSDK/Sources/Utility/WXUtility.m | 5 +++++
3 files changed, 27 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9425cc92/ios/sdk/WeexSDK/Sources/Display/UIBezierPath+Weex.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Display/UIBezierPath+Weex.m b/ios/sdk/WeexSDK/Sources/Display/UIBezierPath+Weex.m
index b7aa821..7a74c3f 100644
--- a/ios/sdk/WeexSDK/Sources/Display/UIBezierPath+Weex.m
+++ b/ios/sdk/WeexSDK/Sources/Display/UIBezierPath+Weex.m
@@ -18,6 +18,7 @@
*/
#import "UIBezierPath+Weex.h"
+#import "WXUtility.h"
@implementation UIBezierPath (Weex)
@@ -32,13 +33,23 @@ static const float kCircleControlPoint = 0.447715;
bottomRight:(CGFloat)bottomRightRadius
{
UIBezierPath *path = [UIBezierPath bezierPath];
- [path moveToPoint:CGPointMake(rect.origin.x + topLeftRadius, rect.origin.y)];
+ if(isnan(topLeftRadius) || isnan(topRightRadius) || isnan(bottomLeftRadius) || isnan(bottomRightRadius)) {
+ return path;
+ }
+ if (![WXUtility isValidPoint:rect.origin] || isnan(rect.size.height) || isnan(rect.size.width)) {
+ return path;
+ }
+ CGPoint topLeftPoint = CGPointMake(rect.origin.x + topLeftRadius, rect.origin.y);
+ if (![WXUtility isValidPoint:topLeftPoint]) {
+ return path;
+ }
+ [path moveToPoint:topLeftPoint];
// +------------------+
// \\ top //
// \\+----------+//
CGPoint topRightPoint = CGPointMake(CGRectGetMaxX(rect) - topRightRadius, rect.origin.y);
- if (isnan(topRightPoint.x) || isnan(topRightPoint.y)) {
+ if (![WXUtility isValidPoint:topRightPoint]) {
return path;
}
[path addLineToPoint:topRightPoint];
@@ -101,5 +112,4 @@ static const float kCircleControlPoint = 0.447715;
return path;
}
-
@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9425cc92/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
index b1b852a..aee32c2 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.h
@@ -203,6 +203,15 @@ _Nonnull SEL WXSwizzledSelectorForSelector(_Nonnull SEL selector);
*/
+ (BOOL)isBlankString:(NSString * _Nullable)string ;
+
+/**
+ check a point is valid or not. A zero point is also valid
+
+ @param point a point value to check
+ @return true if point.x and point.y are all valid value for a number.
+ */
++ (BOOL)isValidPoint:(CGPoint)point;
+
/**
* @abstract Returns a standard error object
*
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/9425cc92/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
index dd3a35d..567ba9a 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXUtility.m
@@ -352,6 +352,11 @@ CGFloat WXFloorPixelValue(CGFloat value)
return false;
}
++ (BOOL)isValidPoint:(CGPoint)point
+{
+ return !(isnan(point.x)) && !(isnan(point.y));
+}
+
+ (NSError *)errorWithCode:(NSInteger)code message:(NSString *)message
{
message = message ? : @"";