On 4 Aug 2009, at 18:19, Jan Lehnardt wrote:

On 4 Aug 2009, at 18:51, [email protected] wrote:

Author: davisp
Date: Tue Aug  4 16:51:41 2009
New Revision: 800873

URL: http://svn.apache.org/viewvc?rev=800873&view=rev
Log:
Proper fix because JS_VERSION cannot distinguish between 1.8.0 and 1.8.1

Thanks Paul. Confirmed this is fixed and works for Spidermonkey 1.7 and 1.8.1.

Unfortunately still fails to compile for me on Debian using libmozjs 1.9.0.12-0lenny1 (Spidermonkey 1.8.0).

Error trace: http://friendpaste.com/rrmRqyrrbe6MnNQQKouaM

--
Jason Davies

www.jasondavies.com




Modified:
  couchdb/trunk/configure.ac
  couchdb/trunk/src/couchdb/couch_js.c

Modified: couchdb/trunk/configure.ac
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/configure.ac?rev=800873&r1=800872&r2=800873&view=diff
= = = = = = = = = =====================================================================
--- couchdb/trunk/configure.ac (original)
+++ couchdb/trunk/configure.ac Tue Aug  4 16:51:41 2009
@@ -103,6 +103,16 @@
Are the Mozilla SpiderMonkey headers installed?])
       ])])

+AC_LANG_PUSH(C)
+AC_LINK_IFELSE(
+    [AC_LANG_PROGRAM(
+        [[]],
+        [[JS_SetOperationCallback(0, 0);]]
+    )],
+ AC_DEFINE([USE_JS_SETOPCB], [], [Use new JS_SetOperationCallback])
+)
+AC_LANG_POP(C)
+
AC_CHECK_ICU([3])

ICU_LOCAL_CFLAGS=`$ICU_CONFIG --cppflags-searchpath`

Modified: couchdb/trunk/src/couchdb/couch_js.c
URL: 
http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_js.c?rev=800873&r1=800872&r2=800873&view=diff
= = = = = = = = = =====================================================================
--- couchdb/trunk/src/couchdb/couch_js.c (original)
+++ couchdb/trunk/src/couchdb/couch_js.c Tue Aug  4 16:51:41 2009
@@ -19,6 +19,7 @@
#include "curlhelper.h"
#include <jsapi.h>
#include <curl/curl.h>
+#include "config.h"

#ifndef CURLOPT_COPYPOSTFIELDS
  #define CURLOPT_COPYPOSTFIELDS 10165
@@ -214,7 +215,7 @@
       return JS_FALSE;
   }

-#if JS_VERSION > 170
+#ifdef USE_JS_SETOPCB
   JS_SetContextThread(sub_context);
   JS_BeginRequest(sub_context);
#endif
@@ -240,7 +241,7 @@
   }

out:
-#if JS_VERSION > 170
+#ifdef USE_JS_SETOPCB
   JS_EndRequest(sub_context);
   JS_ClearContextThread(sub_context);
#endif
@@ -405,9 +406,10 @@

static uint32 gBranchCount = 0;

-#if JS_VERSION <= 170
+#ifdef USE_JS_SETOPCB
static JSBool
-BranchCallback(JSContext *context, JSScript *script) {
+OperationCallback(JSContext *context)
+{
   if ((++gBranchCount & 0x3fff) == 1) {
       JS_MaybeGC(context);
   }
@@ -415,8 +417,7 @@
}
#else
static JSBool
-OperationCallback(JSContext *context)
-{
+BranchCallback(JSContext *context, JSScript *script) {
   if ((++gBranchCount & 0x3fff) == 1) {
       JS_MaybeGC(context);
   }
@@ -1234,13 +1235,13 @@
       return 1;
   /* FIXME: https://bugzilla.mozilla.org/show_bug.cgi?id=477187 */
   JS_SetErrorReporter(context, PrintError);
-#if JS_VERSION <= 170
-    JS_SetBranchCallback(context, BranchCallback);
-    JS_ToggleOptions(context, JSOPTION_NATIVE_BRANCH_CALLBACK);
-#else
+#ifdef USE_JS_SETOPCB
   JS_SetContextThread(context);
   JS_BeginRequest(context);
   JS_SetOperationCallback(context, OperationCallback);
+#else
+    JS_SetBranchCallback(context, BranchCallback);
+    JS_ToggleOptions(context, JSOPTION_NATIVE_BRANCH_CALLBACK);
#endif
   JS_ToggleOptions(context, JSOPTION_XML);

@@ -1272,7 +1273,7 @@

   ExecuteScript(context, global, argv[1]);

-#if JS_VERSION > 170
+#ifdef USE_JS_SETOPCB
   JS_EndRequest(context);
   JS_ClearContextThread(context);
#endif




Reply via email to