File tree Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -501,11 +501,15 @@ tryCastToForeignClass(
501
501
case MetadataKind::ObjCClassWrapper: // Obj-C class => CF class
502
502
case MetadataKind::ForeignClass: { // CF class => CF class
503
503
auto srcObject = getNonNullSrcObject (srcValue, srcType, destType);
504
- auto resultObject = swift_dynamicCastForeignClass (srcObject, destClassType);
505
- if (resultObject ) {
504
+ if ( auto resultObject
505
+ = swift_dynamicCastForeignClass (srcObject, destClassType) ) {
506
506
*reinterpret_cast <const void **>(destLocation) = resultObject;
507
- objc_retain ((id)const_cast <void *>(resultObject));
508
- return DynamicCastResult::SuccessViaCopy;
507
+ if (takeOnSuccess) {
508
+ return DynamicCastResult::SuccessViaTake;
509
+ } else {
510
+ objc_retain ((id)const_cast <void *>(resultObject));
511
+ return DynamicCastResult::SuccessViaCopy;
512
+ }
509
513
}
510
514
break ;
511
515
}
You can’t perform that action at this time.
0 commit comments