Browse Source

fix tuple bounds

tags/v1.4.0
huangmengxi 4 years ago
parent
commit
c0ce9c49b8
1 changed files with 6 additions and 6 deletions
  1. +6
    -6
      mindspore/ccsrc/frontend/operator/composite/composite.cc

+ 6
- 6
mindspore/ccsrc/frontend/operator/composite/composite.cc View File

@@ -935,8 +935,6 @@ int64_t GetArgScalarValue(const abstract::AbstractScalarPtr &scalar, const std::
return GetValue<int64_t>(scalar->BuildValue());
}

bool CheckIndexInRange(int64_t index, int64_t min, int64_t max) { return (index >= min && index <= max); }

int64_t GetPositiveIndex(int64_t index, int64_t length) {
if (index < 0) {
index += length;
@@ -987,10 +985,12 @@ void GenerateTupleSliceParameter(const AbstractTuplePtr &tuple, const AbstractSl

*start_index = CheckSliceMember(slice->start(), start_default, start_name);
*stop_index = CheckSliceMember(slice->stop(), stop_default, stop_name);
if (!CheckIndexInRange(*start_index, -tuple_size, tuple_size - 1) ||
!CheckIndexInRange(*stop_index, -tuple_size - 1, tuple_size)) {
MS_EXCEPTION(ValueError) << "TupleSlice the start index " << *start_index << " or end end index " << *stop_index
<< " out of range, tuple size " << tuple_size << ".";

if (*start_index < -tuple_size) *start_index = 0;
if (*stop_index > tuple_size) *stop_index = tuple_size;
if (*start_index > tuple_size || *stop_index < -tuple_size) {
*start_index = 0;
*stop_index = 0;
}

*start_index = GetPositiveIndex(*start_index, tuple_size);


Loading…
Cancel
Save