Oh, I see -- I misread before, but actually this branch is reached only when all the `PyObject_GetBuffer` calls failed.

Though, in that case, we have an object where `PyObject_CheckBuffer` returned True, so we should probably insist on using the buffer protocol instead of falling through and jamming it into an object array. In this branch, wouldn't it be better to return failure, and propagate the exception from the final `PyObject_GetBuffer(.., PyBUF_SIMPLE)`? (I know this isn't really the point of your PR, but since these PRs are one of the few times that such dusty bits of code get examined carefully I like to try and clean things up when we do find them.)