diff --git a/THANKS b/THANKS index b1ad4a1..d189f82 100644 --- a/THANKS +++ b/THANKS @@ -14,3 +14,8 @@ sk89q spahl * Heads up on the signal hack and fix for a compiler warning. + +Mike West + * Reported bug in Context.max_time + * Better test for test_exceeds_time + diff --git a/spidermonkey/context.c b/spidermonkey/context.c index bb118e8..db9f675 100644 --- a/spidermonkey/context.c +++ b/spidermonkey/context.c @@ -509,13 +509,13 @@ PyObject* Context_max_time(Context* self, PyObject* args, PyObject* kwargs) { PyObject* ret = NULL; - time_t curr_max = (time_t) -1; - time_t new_max = (time_t) -1; + int curr_max = -1; + int new_max = -1; - if(!PyArg_ParseTuple(args, "|I", &new_max)) goto done; + if(!PyArg_ParseTuple(args, "|i", &new_max)) goto done; curr_max = self->max_time; - if(new_max != ((time_t) -1)) self->max_time = new_max; + if(new_max > 0) self->max_time = (time_t) new_max; ret = PyLong_FromLong((long) curr_max); diff --git a/tests/test-context.py b/tests/test-context.py index 488c5ba..fe079db 100644 --- a/tests/test-context.py +++ b/tests/test-context.py @@ -38,8 +38,13 @@ def test_get_set_limits(cx): @t.cx() def test_exceed_time(cx): + script = """ + var time = function() {return (new Date()).getTime();}; + var start = time(); + while((time() - start) < 2000) {} + """ cx.max_time(1) - t.raises(SystemError, cx.execute, "while(true) {}") + t.raises(SystemError, cx.execute, script) @t.cx() def test_does_not_exceed_time(cx):