From: <ar...@co...> - 2008-10-28 15:04:44
|
Author: arigo Date: Tue Oct 28 16:05:12 2008 New Revision: 59486 Modified: psyco/dist/c/Objects/pfloatobject.c psyco/dist/test/test_misc.py Log: Test and fix. Modified: psyco/dist/c/Objects/pfloatobject.c ============================================================================== --- psyco/dist/c/Objects/pfloatobject.c (original) +++ psyco/dist/c/Objects/pfloatobject.c Tue Oct 28 16:05:12 2008 @@ -4,6 +4,7 @@ #if HAVE_FP_FN_CALLS +#define CF_NONPURE_FP_HELPER (CfPure|CfNoReturnValue|CfPyErrIfNonNull) #ifdef WANT_SIGFPE_HANDLER # define CF_PURE_FP_HELPER (CfPure|CfNoReturnValue|CfPyErrIfNonNull) #else @@ -532,7 +533,7 @@ vinfo_array_t* result; CONVERT_TO_DOUBLE2(v, a1, a2, w, b1, b2); result = array_new(2); - x = psyco_generic_call(po, cimpl_fp_div, CfPure|CfNoReturnValue|CfPyErrIfNonNull, + x = psyco_generic_call(po, cimpl_fp_div, CF_NONPURE_FP_HELPER, "vvvva", a1, a2, b1, b2, result); RELEASE_DOUBLE2(a1, a2, b1, b2); if (x != NULL) { @@ -550,7 +551,7 @@ goto fallback; CONVERT_TO_DOUBLE2(v, a1, a2, w, b1, b2); result = array_new(2); - x = psyco_generic_call(po, cimpl_fp_pow, CF_PURE_FP_HELPER, + x = psyco_generic_call(po, cimpl_fp_pow, CF_NONPURE_FP_HELPER, "vvvva", a1, a2, b1, b2, result); RELEASE_DOUBLE2(a1, a2, b1, b2); if (x != NULL) { Modified: psyco/dist/test/test_misc.py ============================================================================== --- psyco/dist/test/test_misc.py (original) +++ psyco/dist/test/test_misc.py Tue Oct 28 16:05:12 2008 @@ -140,3 +140,9 @@ def f(x): return math.ceil(x), math.floor(x) assert psyco.proxy(f)(X()) == (-123.0, -124.0) + +def test_power_error_case(): + def f(x, y): + return x ** y + py.test.raises(ValueError, f, -4.5, 0.9) + py.test.raises(ValueError, psyco.proxy(f), -4.5, 0.9) |