|
From: <br...@us...> - 2011-01-22 07:37:53
|
Revision: 4206
http://openvrml.svn.sourceforge.net/openvrml/?rev=4206&view=rev
Author: braden
Date: 2011-01-22 07:37:47 +0000 (Sat, 22 Jan 2011)
Log Message:
-----------
SpiderMonkey included in the forthcoming XULRunner 2.0 changes the return value of JSVAL_TO_DOUBLE to a double (instead of a pointer).
Modified Paths:
--------------
trunk/ChangeLog
trunk/configure.ac
trunk/src/script/javascript.cpp
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2011-01-02 06:18:43 UTC (rev 4205)
+++ trunk/ChangeLog 2011-01-22 07:37:47 UTC (rev 4206)
@@ -1,3 +1,12 @@
+2011-01-22 Braden McDaniel <br...@en...>
+
+ SpiderMonkey included in the forthcoming XULRunner 2.0 changes the
+ return value of JSVAL_TO_DOUBLE to a double (instead of a
+ pointer).
+
+ * configure.ac
+ * src/script/javascript.cpp
+
2010-11-01 Braden McDaniel <br...@en...>
Boost.Filesystem headers include inline functions that call
Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac 2011-01-02 06:18:43 UTC (rev 4205)
+++ trunk/configure.ac 2011-01-22 07:37:47 UTC (rev 4206)
@@ -149,6 +149,29 @@
CPPFLAGS=$ov_save_CPPFLAGS
#
+# jsval changed from being 32- to 64-bits in XULRunner 2.0.
+#
+AC_CACHE_CHECK([whether JSVAL_TO_DOUBLE returns a pointer],
+[ov_cv_jsval_to_double_returns_pointer],
+[ov_cv_jsval_to_double_returns_pointer=no
+ov_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$JS_CFLAGS $CPPFLAGS"
+AC_LANG_PUSH([C])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[[#include <jsapi.h>]],
+[[
+jsval val;
+*JSVAL_TO_DOUBLE;
+]])],
+[ov_cv_jsval_to_double_returns_pointer=yes])
+AC_LANG_POP([C])
+CPPFLAGS=$ov_save_CPPFLAGS
+])
+AS_IF([test X$ov_cv_jsval_to_double_returns_pointer = Xyes],
+ [AC_DEFINE([OPENVRML_JSVAL_TO_DOUBLE_RETURNS_POINTER], [1],
+ [SpiderMonkey's JSVAL_TO_DOUBLE returns a pointer])])
+
+#
# The JSPropertyOp function signature changed from XULRunner 1.9.2 to
# 1.9.3: the third argument changed from jsval to jsid.
#
Modified: trunk/src/script/javascript.cpp
===================================================================
--- trunk/src/script/javascript.cpp 2011-01-02 06:18:43 UTC (rev 4205)
+++ trunk/src/script/javascript.cpp 2011-01-22 07:37:47 UTC (rev 4206)
@@ -82,6 +82,15 @@
# endif
}
+ OPENVRML_LOCAL jsdouble jsval_to_double(const jsval val)
+ {
+# if OPENVRML_JSVAL_TO_DOUBLE_RETURNS_POINTER
+ return *JSVAL_TO_DOUBLE(val);
+# else
+ return JSVAL_TO_DOUBLE(val);
+# endif
+ }
+
class SFNode;
class MFNode;
@@ -5856,7 +5865,7 @@
out << '[';
for (JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) {
assert(JSVAL_IS_DOUBLE(mfdata->array[i]));
- out << *JSVAL_TO_DOUBLE(mfdata->array[i]);
+ out << jsval_to_double(mfdata->array[i]);
if ((i + 1) < mfdata->array.size()) { out << ", "; }
}
out << ']';
@@ -6235,7 +6244,7 @@
std::vector<float> temp = mffloat->value();
for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) {
assert(JSVAL_IS_DOUBLE(mfdata->array[i]));
- temp[i] = float(*JSVAL_TO_DOUBLE(mfdata->array[i]));
+ temp[i] = float(jsval_to_double(mfdata->array[i]));
}
mffloat->value(temp);
return mffloat;
@@ -6307,7 +6316,7 @@
std::vector<double> temp = mfdouble->value();
for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) {
assert(JSVAL_IS_DOUBLE(mfdata->array[i]));
- temp[i] = *JSVAL_TO_DOUBLE(mfdata->array[i]);
+ temp[i] = jsval_to_double(mfdata->array[i]);
}
mfdouble->value(temp);
return mfdouble;
@@ -7284,7 +7293,7 @@
std::vector<double> temp = mftime->value();
for (MField::JsvalArray::size_type i = 0; i < mfdata->array.size(); ++i) {
assert(JSVAL_IS_DOUBLE(mfdata->array[i]));
- temp[i] = *JSVAL_TO_DOUBLE(mfdata->array[i]);
+ temp[i] = jsval_to_double(mfdata->array[i]);
}
mftime->value(temp);
return mftime;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|