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. |