@@ -1178,6 +1178,13 @@ Method::set_input(const EValue& input_evalue, size_t input_idx) {
1178
1178
ET_NODISCARD Error
1179
1179
Method::set_inputs (const executorch::aten::ArrayRef<EValue>& input_evalues) {
1180
1180
const size_t n_input = inputs_size ();
1181
+ ET_CHECK_OR_RETURN_ERROR (
1182
+ input_evalues.size () == n_input,
1183
+ InvalidArgument,
1184
+ " Invalid number of inputs provided. Expected %" ET_PRIsize_t
1185
+ " , but got %" ET_PRIsize_t,
1186
+ n_input,
1187
+ input_evalues.size ());
1181
1188
for (size_t i = 0 ; i < n_input; ++i) {
1182
1189
ET_CHECK_OK_OR_RETURN_ERROR (set_input (input_evalues[i], i));
1183
1190
}
@@ -1250,20 +1257,17 @@ ET_NODISCARD Error Method::get_outputs(EValue* output_evalues, size_t length) {
1250
1257
initialized (),
1251
1258
InvalidState,
1252
1259
" Outputs can not be retrieved until method has been initialized." );
1253
-
1260
+ const size_t n_output = outputs_size ();
1254
1261
ET_CHECK_OR_RETURN_ERROR (
1255
- length >= outputs_size () ,
1262
+ length >= n_output ,
1256
1263
InvalidArgument,
1257
1264
" The given array is not large enough to hold all outputs." );
1258
-
1259
- for (size_t i = 0 ; i < outputs_size (); i++) {
1265
+ for (size_t i = 0 ; i < n_output; ++i) {
1260
1266
output_evalues[i] = values_[get_output_index (i)];
1261
1267
}
1262
-
1263
- for (size_t i = outputs_size (); i < length; i++) {
1268
+ for (size_t i = n_output; i < length; ++i) {
1264
1269
output_evalues[i] = EValue ();
1265
1270
}
1266
-
1267
1271
return Error::Ok;
1268
1272
}
1269
1273
0 commit comments