it is currently using the same method nditer uses for gil safety
if we return err_msg the check_and_adjust would then look like this:

```
char * err_msg = check_and_adjust()
if (err_msg) {
...
}
```
I don't think thats nicer. One could use assignment inside the if statement, but I don't think we use that style anywhere else in numpy.