Skip to content

Commit 5504ada

Browse files
committed
vec - check stop value in interface CeedVectorSetValueStrided
1 parent 1081e02 commit 5504ada

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

interface/ceed-vector.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,18 +367,20 @@ int CeedVectorSetValue(CeedVector vec, CeedScalar value) {
367367
@ref User
368368
**/
369369
int CeedVectorSetValueStrided(CeedVector vec, CeedSize start, CeedSize stop, CeedSize step, CeedScalar value) {
370+
CeedSize length;
371+
370372
CeedCheck(vec->state % 2 == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS,
371373
"Cannot grant CeedVector array access, the access lock is already in use");
372374
CeedCheck(vec->num_readers == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Cannot grant CeedVector array access, a process has read access");
375+
CeedCall(CeedVectorGetLength(vec, &length));
376+
CeedCheck(stop >= -1 && stop <= length, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Invalid value for stop, must be in the range [-1, length]");
373377

374378
if (vec->SetValueStrided) {
375379
CeedCall(vec->SetValueStrided(vec, start, stop, step, value));
376380
vec->state += 2;
377381
} else {
378-
CeedSize length;
379382
CeedScalar *array;
380383

381-
CeedCall(CeedVectorGetLength(vec, &length));
382384
if (length <= 0) return CEED_ERROR_SUCCESS;
383385
if (stop == -1) stop = length;
384386
CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array));

0 commit comments

Comments
 (0)