Incorrect error checking?
I recently noticed that a parameter check in MPII_Win_get_attr looks a bit off: /* A common user error is to pass the address of a 4-byte * int when the address of a pointer (or an address-sized int) * should have been used. We can test for this specific * case. Note that this code assumes sizeof(intptr_t) is * a power of 2. */ if ((intptr_t) attribute_val & (sizeof(intptr_t) - 1)) { MPIR_ERR_SETANDSTMT(mpi_errno, MPI_ERR_ARG, goto fn_fail, "**attrnotptr"); } The comment indicates that the check is testing "attribute_val" to see if a pointer to int was passed in, rather than a double pointer or pointer to an integer that can store an address. But the check seems to only be testing for 8 byte alignment (and failing if not aligned). Am I missing something here? Nick Radcliffe Software Engineer | Cray Inc. 2131 Lindau Ln #1000 | Bloomington, MN 55425 +1-651-605-8864 [email protected]<mailto:[email protected]> www.cray.com<http://www.cray.com>
participants (1)
-
Nick Radcliffe