[freewrl] fix compile with gcc 4.7

Tom Callaway spot at fedoraproject.org
Wed Jan 18 01:30:20 UTC 2012


commit 3dbc1e37b8b3bec3f4a834f46ab17154b877b999
Author: Tom Callaway <spot at fedoraproject.org>
Date:   Tue Jan 17 20:30:10 2012 -0500

    fix compile with gcc 4.7

 freewrl-1.22.12_pre2-gcc47.patch |  169 ++++++++++++++++++++++++++++++++++++++
 freewrl.spec                     |    8 ++-
 2 files changed, 176 insertions(+), 1 deletions(-)
---
diff --git a/freewrl-1.22.12_pre2-gcc47.patch b/freewrl-1.22.12_pre2-gcc47.patch
new file mode 100644
index 0000000..4f7fa2b
--- /dev/null
+++ b/freewrl-1.22.12_pre2-gcc47.patch
@@ -0,0 +1,169 @@
+diff -up freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.c.gcc47 freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.c
+--- freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.c.gcc47	2012-01-17 16:41:20.054089756 -0500
++++ freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.c	2012-01-17 16:52:34.878617489 -0500
+@@ -913,7 +913,7 @@ void setField_javascriptEventOut(struct
+ 				getMFNodetype (mynode,(struct Multi_Node *)memptr,X3D_NODE(tn),extraData); break;
+ 		}
+ 		case FIELDTYPE_MFString: {
+-			getMFStringtype (scriptContext, (jsval *)tg->CRoutes.JSglobal_return_val,(struct Multi_String *)memptr);
++			getMFStringtype (scriptContext, tg->CRoutes.JSglobal_return_val,(struct Multi_String *)memptr);
+ 			break;
+ 		}
+ 
+@@ -1181,7 +1181,7 @@ void getJSMultiNumType (JSContext *cx, s
+ 		(unsigned int) JSVAL_TO_INT(tg->CRoutes.JSglobal_return_val));
+ 	#endif
+ 
+-	if (tg->jsVRMLBrowser.JSCreate_global_return_val!= INT_TO_JSVAL(0)) {
++	if (JSVAL_TO_INT(tg->jsVRMLBrowser.JSCreate_global_return_val) != 0) {
+ 		myJSVal = tg->jsVRMLBrowser.JSCreate_global_return_val;
+ 		tg->jsVRMLBrowser.JSCreate_global_return_val = INT_TO_JSVAL(0);
+ 
+@@ -1434,7 +1434,7 @@ void getJSMultiNumType (JSContext *cx, s
+ /* a script is returning a MFString type; add this to the C	*/
+ /* children field						*/
+ /****************************************************************/
+-void getMFStringtype (JSContext *cx, jsval *from, struct Multi_String *to) {
++void getMFStringtype (JSContext *cx, jsval from, struct Multi_String *to) {
+ 	int oldlen, newlen;
+ 	jsval _v;
+ 	JSObject *obj;
+@@ -1450,7 +1450,7 @@ void getMFStringtype (JSContext *cx, jsv
+ 	svptr = to->p;
+ 	newlen=0;
+ 
+-	if (!JS_ValueToObject(cx, (jsval) from, &obj))
++	if (!JS_ValueToObject(cx, from, &obj))
+ 		printf ("JS_ValueToObject failed in getMFStringtype\n");
+ 
+ 	if (!JS_GetProperty(cx, obj,  MF_LENGTH_FIELD, &_v)) {
+diff -up freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.h.gcc47 freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.h
+--- freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.h.gcc47	2012-01-17 16:52:51.079463130 -0500
++++ freewrl-1.22.12_pre2/src/lib/world_script/fieldSet.h	2012-01-17 16:53:01.377365012 -0500
+@@ -55,7 +55,7 @@ int findRoutedFieldInARR (struct X3D_Nod
+ int findFieldInARR(const char*, const char**, size_t);
+ void findFieldInOFFSETS(int, const int, int *, int *, int *);
+ void getJSMultiNumType(JSContext *, struct Multi_Vec3f *, int);
+-void getMFStringtype(JSContext *, jsval *, struct Multi_String *);
++void getMFStringtype(JSContext *, jsval, struct Multi_String *);
+ int findIndexInFIELDNAMES(int, const char**, size_t);
+ char *findFIELDNAMESfromNodeOffset(struct X3D_Node *node, int offset);
+ void getMFNodetype (struct X3D_Node *strp, struct Multi_Node *ch, struct X3D_Node *par, int ar);
+diff -up freewrl-1.22.12_pre2/src/lib/world_script/jsUtils.c.gcc47 freewrl-1.22.12_pre2/src/lib/world_script/jsUtils.c
+--- freewrl-1.22.12_pre2/src/lib/world_script/jsUtils.c.gcc47	2012-01-17 16:53:58.993816049 -0500
++++ freewrl-1.22.12_pre2/src/lib/world_script/jsUtils.c	2012-01-17 20:06:26.346892508 -0500
+@@ -192,7 +192,10 @@ static JSBool setSF_in_MF (JSContext *cx
+ 			#endif
+ 			#endif
+ 
+-			if (!setSFNodeField (cx, par, pf,
++			jsid idid;
++			JS_ValueToId(cx, pf, &idid);
++
++			if (!setSFNodeField (cx, par, idid,
+ #if JS_VERSION >= 185
+ 			   JS_FALSE,
+ #endif
+@@ -957,7 +960,10 @@ static JSBool getSFNodeField (JSContext
+ 
+ 	/* NOTE - caller is (eventually) a JS class constructor, no need to BeginRequest */
+ 
+-	_idStr = JS_ValueToString(context, id);
++	jsval myval;
++	JS_IdToValue(context,id,&myval);
++
++	_idStr = JS_ValueToString(context, myval);
+ #if JS_VERSION < 185
+ 	_id_c = JS_GetStringBytes(_idStr);
+ #else
+@@ -1167,10 +1173,13 @@ JSBool setSFNodeField (JSContext *contex
+ 
+ 	/* get the id field... */
+ 
++	jsval myval;
++	JS_IdToValue(context,id,&myval);
++
+ #if JS_VERSION < 185
+-	_id_c = JS_GetStringBytes(JSVAL_TO_STRING(id));
++	_id_c = JS_GetStringBytes(JSVAL_TO_STRING(myval));
+ #else
+-	_id_c = JS_EncodeString(context,JSVAL_TO_STRING(id));
++	_id_c = JS_EncodeString(context,JSVAL_TO_STRING(myval));
+ #endif
+ 	
+ 	#ifdef JSVRMLCLASSESVERBOSE
+diff -up freewrl-1.22.12_pre2/src/lib/world_script/jsVRMLClasses.c.gcc47 freewrl-1.22.12_pre2/src/lib/world_script/jsVRMLClasses.c
+--- freewrl-1.22.12_pre2/src/lib/world_script/jsVRMLClasses.c.gcc47	2012-01-17 16:30:57.029025097 -0500
++++ freewrl-1.22.12_pre2/src/lib/world_script/jsVRMLClasses.c	2012-01-17 20:15:44.233495123 -0500
+@@ -1130,7 +1130,7 @@ _standardMFGetProperty(JSContext *cx,
+ 				return JS_FALSE;
+ 			}
+ 
+-			if (!doMFSetProperty(cx,obj,id,vp,type)) {
++			if (!doMFSetProperty(cx,obj,iid,vp,type)) {
+ 				printf ("wow, cant assign property\n");
+ 			}
+ 		}
+@@ -1141,7 +1141,7 @@ _standardMFGetProperty(JSContext *cx,
+ 			printf( "JS_LookupElement failed in %d.\n",type);
+ 			return JS_FALSE;
+ 		}
+-		if (*vp == JSVAL_VOID) {
++		if (JSVAL_TO_INT(*vp) == 0) {
+ 			printf( "warning: %d: obj = %p, jsval = %d does not exist!\n",type,
+ 				obj, (int) _index);
+ 			return JS_TRUE;
+@@ -1649,7 +1649,10 @@ doMFSetProperty(JSContext *cx, JSObject
+ 			#endif
+ 			#endif
+ 
+-			if (!setSFNodeField (cx, par, pf,
++			jsid myid;
++			JS_ValueToId(cx, pf, &myid);
++
++			if (!setSFNodeField (cx, par, myid,
+ #if JS_VERSION >= 185
+ 			    JS_FALSE,
+ #endif
+@@ -1740,7 +1743,7 @@ JSBool loadVrmlClasses(JSContext *contex
+ 		printf ("loading %s\n",JSLoadProps[i].id);
+ 		#endif
+ 
+-		v = 0;
++		v = INT_TO_JSVAL(0);
+ 		if (( myProto = JS_InitClass(context, globalObj, NULL, JSLoadProps[i].class,
+ 			  JSLoadProps[i].constr, INIT_ARGC, NULL,
+ 			  JSLoadProps[i].Functions, NULL, NULL)) == NULL) {
+diff -up freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_MFClasses.c.gcc47 freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_MFClasses.c
+--- freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_MFClasses.c.gcc47	2012-01-17 20:16:03.984305095 -0500
++++ freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_MFClasses.c	2012-01-17 20:16:38.586969274 -0500
+@@ -1692,7 +1692,7 @@ VrmlMatrixGetProperty(JSContext *cx, JSO
+ 						"JS_LookupElement failed in VrmlMatrixGetProperty.\n");
+ 				return JS_FALSE;
+ 			}
+-			if (*vp == JSVAL_VOID) {
++			if (JSVAL_TO_INT(*vp) == 0) {
+ 				printf( "VrmlMatrixGetProperty: obj = %p, jsval = %d does not exist!\n",
+ 					   obj, (int) _index);
+ 				return JS_FALSE;
+@@ -1935,7 +1935,7 @@ MFStringGetProperty(JSContext *cx, JSObj
+ 				printf( "JS_LookupElement failed in MFStringGetProperty.\n");
+ 				return JS_FALSE;
+ 			}
+-			if (*vp == JSVAL_VOID) {
++			if (JSVAL_TO_INT(*vp) == 0) {
+ 				/* jut make up new strings, as above */
+ 				/* printf ("MFStringGetProperty, element %d is JSVAL_VOID, making up string for it\n",_index); */
+ 				_str = JS_NewStringCopyZ(cx, "NULL");
+diff -up freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_SFClasses.c.gcc47 freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_SFClasses.c
+--- freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_SFClasses.c.gcc47	2012-01-17 20:17:12.466641491 -0500
++++ freewrl-1.22.12_pre2/src/lib/world_script/jsVRML_SFClasses.c	2012-01-17 20:17:47.502302531 -0500
+@@ -1507,7 +1507,7 @@ SFNodeGetProperty(JSContext *cx, JSObjec
+ 
+ 		/* does the property exist? */
+                 if (JS_LookupProperty (cx, obj, _id_c, &rval)) {
+-			if (rval == JSVAL_VOID) {
++			if (JSVAL_TO_INT(rval) == 0) {
+ 				ConsoleMessage ("SFNode - field :%s: does not exist",_id_c);
+ 				return JS_FALSE;
+ 			}
diff --git a/freewrl.spec b/freewrl.spec
index 0827dda..4802b63 100644
--- a/freewrl.spec
+++ b/freewrl.spec
@@ -2,7 +2,7 @@
 
 Name:		freewrl
 Version:	1.22.12
-Release:	0.6.%{pretag}%{?dist}
+Release:	0.7.%{pretag}%{?dist}
 Summary:	X3D / VRML visualization program
 Group:		Applications/Internet
 License:	LGPLv3+
@@ -11,6 +11,8 @@ Source0:	http://sourceforge.net/projects/freewrl/files/freewrl-linux/1.22/%{name
 Source1:	README.FreeWRL.java
 # Fix build against firefox 8
 Patch0:		freewrl-1.22.12_pre2-firefox8.patch
+# Fix compile with gcc 4.7
+Patch1:		freewrl-1.22.12_pre2-gcc47.patch
 BuildRequires:	zlib-devel, freetype-devel, fontconfig-devel 
 BuildRequires:	imlib2-devel, nspr-devel, xulrunner-devel
 BuildRequires:	expat-devel, libXxf86vm-devel, libX11-devel, libXext-devel
@@ -73,6 +75,7 @@ browser plugin for Firefox (and other xulrunner compatible browsers).
 %setup -q -n %{name}-%{version}_%{pretag}
 cp %{SOURCE1} .
 %patch0 -p1 -b .ff8
+%patch1 -p1 -b .gcc47
 # Don't need it.
 rm -rf appleOSX/
 
@@ -145,6 +148,9 @@ chrpath --delete %{buildroot}%{_libdir}/libFreeWRLEAI.so.*
 %{_libdir}/mozilla/plugins/libFreeWRLplugin.so
 
 %changelog
+* Tue Jan 17 2012 Tom Callaway <spot at fedoraproject.org> - 1.22.12-0.7.pre2
+- fix compile with gcc 4.7
+
 * Fri Jan 13 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.22.12-0.6.pre2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
 


More information about the scm-commits mailing list