Skip to content

Commit f60f0e8

Browse files
authored
Return retained objects from toNSArray.
Differential Revision: D76491604 Pull Request resolved: pytorch/executorch#11629
1 parent 3cc48c8 commit f60f0e8

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

extension/apple/ExecuTorch/Exported/ExecuTorchTensor.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ - (instancetype)initWithScalars:(NSArray<NSNumber *> *)scalars
347347
for (NSUInteger index = 0; index < count; ++index) {
348348
ET_SWITCH_REALHBBF16_AND_UINT_TYPES(
349349
static_cast<ScalarType>(dataType), nil, "initWithScalars", CTYPE, [&] {
350-
reinterpret_cast<CTYPE *>(data.data())[index] = utils::extractValue<CTYPE>(scalars[index]);
350+
reinterpret_cast<CTYPE *>(data.data())[index] = utils::toType<CTYPE>(scalars[index]);
351351
}
352352
);
353353
}
@@ -659,7 +659,7 @@ + (instancetype)fullTensorWithShape:(NSArray<NSNumber *> *)shape
659659
Scalar fillValue;
660660
ET_SWITCH_REALHBBF16_AND_UINT_TYPES(
661661
static_cast<ScalarType>(dataType), nil, "fullTensor", CTYPE, [&] {
662-
fillValue = utils::extractValue<CTYPE>(scalar);
662+
fillValue = utils::toType<CTYPE>(scalar);
663663
}
664664
);
665665
auto tensor = full_strided(

extension/apple/ExecuTorch/Internal/ExecuTorchUtils.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ ScalarType deduceType(NSNumber *number);
3333
* @return The value converted to type T.
3434
*/
3535
template <typename T>
36-
T extractValue(NSNumber *number) {
36+
T toType(NSNumber *number) {
3737
ET_CHECK_MSG(!(isFloatingType(deduceType(number)) &&
3838
isIntegralType(CppTypeToScalarType<T>::value, true)),
3939
"Cannot convert floating point to integral type");
@@ -87,7 +87,7 @@ std::vector<T> toVector(NSArray<NSNumber *> *array) {
8787
std::vector<T> vector;
8888
vector.reserve(array.count);
8989
for (NSNumber *number in array) {
90-
vector.push_back(extractValue<T>(number));
90+
vector.push_back(toType<T>(number));
9191
}
9292
return vector;
9393
}
@@ -108,10 +108,11 @@ constexpr bool isNSNumberWrapable =
108108
* @return An NSArray populated with NSNumber objects representing the container's items.
109109
*/
110110
template <typename Container>
111+
NS_RETURNS_RETAINED
111112
NSArray<NSNumber *> *toNSArray(const Container &container) {
112113
static_assert(isNSNumberWrapable<typename Container::value_type>, "Invalid container value type");
113114
const NSUInteger count = std::distance(std::begin(container), std::end(container));
114-
NSMutableArray<NSNumber *> *array = [NSMutableArray arrayWithCapacity:count];
115+
NSMutableArray<NSNumber *> *array = [[NSMutableArray alloc] initWithCapacity:count];
115116
for (const auto &item : container) {
116117
[array addObject:@(item)];
117118
}

0 commit comments

Comments
 (0)