Might look better to put the `PyLong_AsUnsignedLong(a)` in a temporary local variable before the check. I suspect the compiler will generate the same code after optimization. I can't decide if we should be setting the value of `arg1` on error or not.