# HG changeset patch # User Atul Varma # Date 1246426968 25200 # Node ID 3f8a2db496f53f9318e352608cd866b8ce36bb63 # Parent abf14cba9ef5c1c6e115d7b0ce3dbd15f389499d Changed PYM_pyObjectToJsval() to simply return an int status/error code; this way callers don't have to worry about decreasing the reference count of a Py_NONE. diff -r abf14cba9ef5 -r 3f8a2db496f5 context.c --- a/context.c Tue Jun 30 22:37:00 2009 -0700 +++ b/context.c Tue Jun 30 22:42:48 2009 -0700 @@ -149,10 +149,10 @@ return JS_FALSE; } - PyObject *success = PYM_pyObjectToJsval(cx, result, rval); + int error = PYM_pyObjectToJsval(cx, result, rval); Py_DECREF(result); - if (success == NULL) { + if (error) { // TODO: Get the actual exception. JS_ReportError(cx, "Python function failed."); return JS_FALSE; diff -r abf14cba9ef5 -r 3f8a2db496f5 utils.c --- a/utils.c Tue Jun 30 22:37:00 2009 -0700 +++ b/utils.c Tue Jun 30 22:42:48 2009 -0700 @@ -4,7 +4,7 @@ PyObject *PYM_error; -static PyObject * +static int PYM_doubleToJsval(JSContext *cx, double number, jsval *rval) @@ -12,13 +12,13 @@ jsdouble *numberAsJsdouble = JS_NewDouble(cx, number); if (numberAsJsdouble == NULL) { PyErr_SetString(PYM_error, "JS_NewDouble() failed"); - return NULL; + return -1; } *rval = DOUBLE_TO_JSVAL(numberAsJsdouble); - Py_RETURN_NONE; + return 0; } -PyObject * +int PYM_pyObjectToJsval(JSContext *cx, PyObject *object, jsval *rval) @@ -30,11 +30,11 @@ (const jschar *) string); if (jsString == NULL) { PyErr_SetString(PYM_error, "JS_NewUCStringCopyZ() failed"); - return NULL; + return -1; } *rval = STRING_TO_JSVAL(jsString); - Py_RETURN_NONE; + return 0; } #endif @@ -42,7 +42,7 @@ long number = PyInt_AS_LONG(object); if (INT_FITS_IN_JSVAL(number)) { *rval = INT_TO_JSVAL(number); - Py_RETURN_NONE; + return 0; } else return PYM_doubleToJsval(cx, number, rval); } @@ -53,7 +53,7 @@ // TODO: Support more types. PyErr_SetString(PyExc_NotImplementedError, "Data type conversion not implemented."); - return NULL; + return -1; } PyObject * diff -r abf14cba9ef5 -r 3f8a2db496f5 utils.h --- a/utils.h Tue Jun 30 22:37:00 2009 -0700 +++ b/utils.h Tue Jun 30 22:42:48 2009 -0700 @@ -14,7 +14,7 @@ extern PyObject *PYM_error; -extern PyObject * +extern int PYM_pyObjectToJsval(JSContext *cx, PyObject *object, jsval *rval);