Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b3d8274

Browse files
authored
Merge pull request #20651 from charris/backport-20630
BUG: f2py: Simplify creation of an exception message.
2 parents 47b4514 + c61f157 commit b3d8274

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

numpy/f2py/src/fortranobject.c

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -702,15 +702,14 @@ check_and_fix_dimensions(const PyArrayObject *arr, const int rank,
702702
npy_intp *dims);
703703

704704
static int
705-
count_negative_dimensions(const int rank, const npy_intp *dims)
705+
find_first_negative_dimension(const int rank, const npy_intp *dims)
706706
{
707-
int i = 0, r = 0;
708-
while (i < rank) {
709-
if (dims[i] < 0)
710-
++r;
711-
++i;
707+
for (int i = 0; i < rank; ++i) {
708+
if (dims[i] < 0) {
709+
return i;
710+
}
712711
}
713-
return r;
712+
return -1;
714713
}
715714

716715
#ifdef DEBUG_COPY_ND_ARRAY
@@ -795,15 +794,12 @@ array_from_pyobj(const int type_num, npy_intp *dims, const int rank,
795794
((intent & F2PY_INTENT_CACHE) && (obj == Py_None)) ||
796795
((intent & F2PY_OPTIONAL) && (obj == Py_None))) {
797796
/* intent(cache), optional, intent(hide) */
798-
if (count_negative_dimensions(rank, dims) > 0) {
799-
int i;
800-
strcpy(mess,
801-
"failed to create intent(cache|hide)|optional array"
802-
"-- must have defined dimensions but got (");
803-
for (i = 0; i < rank; ++i)
804-
sprintf(mess + strlen(mess), "%" NPY_INTP_FMT ",", dims[i]);
805-
strcat(mess, ")");
806-
PyErr_SetString(PyExc_ValueError, mess);
797+
int i = find_first_negative_dimension(rank, dims);
798+
if (i >= 0) {
799+
PyErr_Format(PyExc_ValueError,
800+
"failed to create intent(cache|hide)|optional array"
801+
" -- must have defined dimensions, but dims[%d] = %"
802+
NPY_INTP_FMT, i, dims[i]);
807803
return NULL;
808804
}
809805
arr = (PyArrayObject *)PyArray_New(&PyArray_Type, rank, dims, type_num,

0 commit comments

Comments
 (0)