summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Joseph Davis <davisp@apache.org>2011-10-18 16:19:51 -0500
committerPaul Joseph Davis <davisp@apache.org>2011-10-18 16:34:33 -0500
commit7c6e5f0f4340e997a761ff5ca627422fea90d4cc (patch)
tree3836fc5962055832a27b00940811dc43b596e4c8
parent7ce9e103e50678a38c78607f2441340cd6d688da (diff)
Minor fixes to link agianst SpiderMonkey trunk
This patch allows couchjs to link against the SpiderMonkey as it existed in the mercurial hash 59c1e6bdb11 from [1]. This does *not* ensure compatibility with CouchDB as there are other things that will also need to be fixed. Specifically, the anonymous function issue for builtin JS functions. [1] http://hg.mozilla.org/mozilla-central/
-rw-r--r--configure.ac8
-rw-r--r--src/couchdb/priv/couch_js/http.c12
-rw-r--r--src/couchdb/priv/couch_js/sm185.c2
3 files changed, 15 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index 6f9327d0..182e0eb5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -214,6 +214,14 @@ AC_CHECK_LIB([$JS_LIB_BASE], [JS_GetStringCharsAndLength],
AC_DEFINE([HAVE_JS_GET_STRING_CHARS_AND_LENGTH], [1],
[Use newer JS_GetCharsAndLength function.]))
+# Deal with JSScript -> JSObject -> JSScript switcheroo
+
+AC_CHECK_TYPE([JSScript*],
+ [AC_DEFINE([JSSCRIPT_TYPE], [JSScript*], [Use JSObject* for scripts])],
+ [AC_DEFINE([JSSCRIPT_TYPE], [JSObject*], [Use JSScript* for scripts])],
+ [[#include <jsapi.h>]]
+)
+
AC_LANG_POP(C)
AC_ARG_WITH([win32-icu-binaries], [AC_HELP_STRING([--with-win32-icu-binaries=PATH],
diff --git a/src/couchdb/priv/couch_js/http.c b/src/couchdb/priv/couch_js/http.c
index 77078e35..7630c456 100644
--- a/src/couchdb/priv/couch_js/http.c
+++ b/src/couchdb/priv/couch_js/http.c
@@ -126,7 +126,7 @@ http_open(JSContext* cx, JSObject* req, jsval mth, jsval url, jsval snc)
goto done;
}
- if(mth == JSVAL_VOID) {
+ if(JSVAL_IS_VOID(mth)) {
JS_ReportError(cx, "You must specify a method.");
goto done;
}
@@ -148,7 +148,7 @@ http_open(JSContext* cx, JSObject* req, jsval mth, jsval url, jsval snc)
http->method = methid;
- if(url == JSVAL_VOID) {
+ if(JSVAL_IS_VOID(url)) {
JS_ReportError(cx, "You must specify a URL.");
goto done;
}
@@ -164,7 +164,7 @@ http_open(JSContext* cx, JSObject* req, jsval mth, jsval url, jsval snc)
goto done;
}
- if(snc != JSVAL_FALSE) {
+ if(JSVAL_IS_BOOLEAN(snc) && !JSVAL_TO_BOOLEAN(snc)) {
JS_ReportError(cx, "Synchronous flag must be false.");
goto done;
}
@@ -200,7 +200,7 @@ http_set_hdr(JSContext* cx, JSObject* req, jsval name, jsval val)
goto done;
}
- if(name == JSVAL_VOID)
+ if(JSVAL_IS_VOID(name))
{
JS_ReportError(cx, "You must speciy a header name.");
goto done;
@@ -213,7 +213,7 @@ http_set_hdr(JSContext* cx, JSObject* req, jsval name, jsval val)
goto done;
}
- if(val == JSVAL_VOID)
+ if(JSVAL_IS_VOID(val))
{
JS_ReportError(cx, "You must specify a header value.");
goto done;
@@ -258,7 +258,7 @@ http_send(JSContext* cx, JSObject* req, jsval body)
goto done;
}
- if(body != JSVAL_VOID && body != JS_GetEmptyStringValue(cx)) {
+ if(!JSVAL_IS_VOID(body)) {
bodystr = enc_string(cx, body, &bodylen);
if(!bodystr) {
JS_ReportError(cx, "Failed to encode body.");
diff --git a/src/couchdb/priv/couch_js/sm185.c b/src/couchdb/priv/couch_js/sm185.c
index 701d5677..6a4522e7 100644
--- a/src/couchdb/priv/couch_js/sm185.c
+++ b/src/couchdb/priv/couch_js/sm185.c
@@ -310,7 +310,7 @@ main(int argc, const char* argv[])
JSObject* global = NULL;
JSCrossCompartmentCall *call = NULL;
JSObject* klass = NULL;
- JSObject* script;
+ JSSCRIPT_TYPE script;
JSString* scriptsrc;
const jschar* schars;
size_t slen;