diff -Naur nautilus-2.6.3-old/Makefile.in nautilus-2.6.3/Makefile.in
--- nautilus-2.6.3-old/Makefile.in	2004-06-14 17:33:10.000000000 -0400
+++ nautilus-2.6.3/Makefile.in	2004-07-02 09:03:52.000000000 -0400
@@ -195,7 +195,6 @@
 	libnautilus-private 	\
 	libnautilus-adapter	\
 	src 			\
-	test 			\
 	components		\
 	po 			\
 	data 			\
diff -Naur nautilus-2.6.3-old/components/emblem/Makefile.in nautilus-2.6.3/components/emblem/Makefile.in
--- nautilus-2.6.3-old/components/emblem/Makefile.in	2004-06-14 17:33:25.000000000 -0400
+++ nautilus-2.6.3/components/emblem/Makefile.in	2004-07-01 17:41:49.000000000 -0400
@@ -195,7 +195,7 @@
 					libmain.c 
 
 
-libnautilus_emblem_view_la_LDFLAGS = -module -avoid-version -no-undefined
+libnautilus_emblem_view_la_LDFLAGS = -module -avoid-version
 
 libnautilus_emblem_view_la_LIBADD = \
 	$(top_builddir)/libnautilus/libnautilus.la	\
diff -Naur nautilus-2.6.3-old/components/history/Makefile.in nautilus-2.6.3/components/history/Makefile.in
--- nautilus-2.6.3-old/components/history/Makefile.in	2004-06-14 17:33:23.000000000 -0400
+++ nautilus-2.6.3/components/history/Makefile.in	2004-07-01 17:41:49.000000000 -0400
@@ -188,7 +188,7 @@
 	$(NULL)
 
 
-libnautilus_history_view_la_LDFLAGS = -module -avoid-version -no-undefined
+libnautilus_history_view_la_LDFLAGS = -module -avoid-version
 
 libnautilus_history_view_la_LIBADD = \
 	$(top_builddir)/libnautilus/libnautilus.la	\
diff -Naur nautilus-2.6.3-old/components/notes/Makefile.in nautilus-2.6.3/components/notes/Makefile.in
--- nautilus-2.6.3-old/components/notes/Makefile.in	2004-06-14 17:33:23.000000000 -0400
+++ nautilus-2.6.3/components/notes/Makefile.in	2004-07-01 17:41:49.000000000 -0400
@@ -192,7 +192,7 @@
 	$(NULL)
 
 
-libnautilus_notes_view_la_LDFLAGS = -module -avoid-version -no-undefined
+libnautilus_notes_view_la_LDFLAGS = -module -avoid-version
 
 server_in_files = Nautilus_View_notes.server.in.in
 
diff -Naur nautilus-2.6.3-old/configure nautilus-2.6.3/configure
--- nautilus-2.6.3-old/configure	2004-06-14 17:32:36.000000000 -0400
+++ nautilus-2.6.3/configure	2004-07-01 17:41:49.000000000 -0400
@@ -24985,7 +24985,7 @@
 
 LIBNAUTILUS_LIBS="`$PKG_CONFIG --libs $LIBNAUTILUS_MODULES`"
 
-LIBNAUTILUS_IDL_INCLUDES="`$PKG_CONFIG --variable=idldir $LIBNAUTILUS_MODULES | $srcdir/add-include-prefix`"
+LIBNAUTILUS_IDL_INCLUDES="`$PKG_CONFIG --variable=idldir $LIBNAUTILUS_MODULES | xargs -n1 echo -n ' -I '`"
 
 
 LIBNAUTILUS_EXTENSION_MODULES="glib-2.0 gtk+-2.0 gnome-vfs-2.0"
@@ -24999,7 +24999,7 @@
 
 CORE_LIBS="`$PKG_CONFIG --libs $CORE_MODULES` $CDDA_LIBS $LIBJPEG $x_libs"
 
-CORE_IDL_INCLUDES="`$PKG_CONFIG --variable=idldir $CORE_MODULES | $srcdir/add-include-prefix`"
+CORE_IDL_INCLUDES="`$PKG_CONFIG --variable=idldir $CORE_MODULES | xargs -n1 echo -n ' -I '`"
 
 
 COMPONENT_MODULES="eel-2.0 libbonoboui-2.0 gnome-vfs-module-2.0 gnome-desktop-2.0"
diff -Naur nautilus-2.6.3-old/libnautilus/Makefile.in nautilus-2.6.3/libnautilus/Makefile.in
--- nautilus-2.6.3-old/libnautilus/Makefile.in	2004-06-14 17:33:12.000000000 -0400
+++ nautilus-2.6.3/libnautilus/Makefile.in	2004-07-02 09:02:20.000000000 -0400
@@ -186,7 +186,6 @@
 libnautilus_la_LDFLAGS = \
 	-version-info 2:0:0 \
 	$(LIBNAUTILUS_LIBS) \
-	-no-undefined \
 	$(NULL)
 
 
diff -Naur nautilus-2.6.3-old/libnautilus-private/Makefile.in nautilus-2.6.3/libnautilus-private/Makefile.in
--- nautilus-2.6.3-old/libnautilus-private/Makefile.in	2004-06-14 17:33:15.000000000 -0400
+++ nautilus-2.6.3/libnautilus-private/Makefile.in	2004-07-02 09:03:04.000000000 -0400
@@ -201,7 +201,6 @@
 
 libnautilus_private_la_LDFLAGS = \
 	-version-info 2:0:0		\
-	-no-undefined			\
 	$(dependency_static_libs)	\
 	$(CORE_LIBS)			\
 	$(NULL)
diff -Naur nautilus-2.6.3-old/libnautilus-private/nautilus-emblem-utils.c nautilus-2.6.3/libnautilus-private/nautilus-emblem-utils.c
--- nautilus-2.6.3-old/libnautilus-private/nautilus-emblem-utils.c	2003-12-18 13:38:23.000000000 -0500
+++ nautilus-2.6.3/libnautilus-private/nautilus-emblem-utils.c	2004-07-01 17:41:51.000000000 -0400
@@ -24,6 +24,8 @@
 
 #include <config.h>
 
+#include <sys/types.h>
+
 #include <utime.h>
 #include <stdio.h>
 #include <time.h>
diff -Naur nautilus-2.6.3-old/libnautilus-private/nautilus-medusa-support.c nautilus-2.6.3/libnautilus-private/nautilus-medusa-support.c
--- nautilus-2.6.3-old/libnautilus-private/nautilus-medusa-support.c	2001-10-28 15:21:46.000000000 -0500
+++ nautilus-2.6.3/libnautilus-private/nautilus-medusa-support.c	2004-07-01 17:41:51.000000000 -0400
@@ -30,6 +30,7 @@
 
 #include <eel/eel-glib-extensions.h>
 #include <eel/eel-string.h>
+#include <stdint.h>
 #include <dirent.h>
 #include <stdio.h>
 #include <sys/types.h>
diff -Naur nautilus-2.6.3-old/libnautilus-private/nautilus-program-chooser.c nautilus-2.6.3/libnautilus-private/nautilus-program-chooser.c
--- nautilus-2.6.3-old/libnautilus-private/nautilus-program-chooser.c	2004-02-11 11:03:40.000000000 -0500
+++ nautilus-2.6.3/libnautilus-private/nautilus-program-chooser.c	2004-07-01 17:41:51.000000000 -0400
@@ -26,6 +26,10 @@
 */
 
 #include <config.h>
+
+#include <crt_externs.h>
+#define environ (*_NSGetEnviron())
+
 #include "nautilus-program-chooser.h"
 
 #include "nautilus-global-preferences.h"
diff -Naur nautilus-2.6.3-old/libnautilus-private/nautilus-program-choosing.c nautilus-2.6.3/libnautilus-private/nautilus-program-choosing.c
--- nautilus-2.6.3-old/libnautilus-private/nautilus-program-choosing.c	2004-04-07 13:22:26.000000000 -0400
+++ nautilus-2.6.3/libnautilus-private/nautilus-program-choosing.c	2004-07-01 17:41:51.000000000 -0400
@@ -56,6 +56,9 @@
 #define MAX_URI_IN_DIALOG_LENGTH 60
 
 
+#include <crt_externs.h>
+#define environ (*_NSGetEnviron())
+
 #ifdef HAVE_STARTUP_NOTIFICATION
 #define SN_API_NOT_YET_FROZEN
 #include <libsn/sn.h>
diff -Naur nautilus-2.6.3-old/ltmain.sh nautilus-2.6.3/ltmain.sh
--- nautilus-2.6.3-old/ltmain.sh	2004-04-05 19:24:18.000000000 -0400
+++ nautilus-2.6.3/ltmain.sh	2004-07-01 17:41:52.000000000 -0400
@@ -2261,7 +2261,7 @@
 	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
 	  if test "$installed" = no; then
 	    notinst_deplibs="$notinst_deplibs $lib"
-	    need_relink=yes
+	    # need_relink=yes
 	  fi
 	  # This is a shared library
 	
diff -Naur nautilus-2.6.3-old/po/Makefile.in.in nautilus-2.6.3/po/Makefile.in.in
--- nautilus-2.6.3-old/po/Makefile.in.in	2004-06-14 17:32:25.000000000 -0400
+++ nautilus-2.6.3/po/Makefile.in.in	2004-07-01 17:41:52.000000000 -0400
@@ -28,7 +28,7 @@
 exec_prefix = @exec_prefix@
 datadir = @datadir@
 libdir = @libdir@
-localedir = $(libdir)/locale
+localedir = $(datadir)/locale
 gnulocaledir = $(datadir)/locale
 gettextsrcdir = $(datadir)/glib-2.0/gettext/po
 subdir = po

diff -Naur nautilus-2.6.3-old/src/file-manager/fm-desktop-icon-view.c nautilus-2.6.3/src/file-manager/fm-desktop-icon-view.c
--- nautilus-2.6.3-old/src/file-manager/fm-desktop-icon-view.c	2004-06-10 00:14:55.000000000 +1000
+++ nautilus-2.6.3/src/file-manager/fm-desktop-icon-view.c	2004-12-17 13:08:31.187503033 +1100
@@ -163,6 +163,7 @@
 net_workarea_changed (FMDesktopIconView *icon_view,
 		      GdkWindow         *window)
 {
+	long *nworkareas = NULL;
 	long *workareas = NULL;
 	GdkAtom type_returned;
 	int format_returned;
@@ -174,23 +175,57 @@
 
 	icon_container = get_icon_container (icon_view);
 
+	/* Find the number of desktops so we know how long the
+	 * workareas array is going to be (each desktop will have four
+	 * elements in the workareas array describing
+	 * x,y,width,height) */
 	gdk_error_trap_push ();
 	if (!gdk_property_get (window,
-			       gdk_atom_intern ("_NET_WORKAREA", FALSE),
+			       gdk_atom_intern ("_NET_NUMBER_OF_DESKTOPS", FALSE),
 			       gdk_x11_xatom_to_atom (XA_CARDINAL),
-			       0, G_MAXLONG, FALSE,
+			       0, 4, FALSE,
 			       &type_returned,
 			       &format_returned,
 			       &length_returned,
-			       (guchar **) &workareas)) {
+			       (guchar **) &nworkareas)) {
+		g_warning("Can not caclulate _NET_NUMBER_OF_DESKTOPS");
+	}
+	if (gdk_error_trap_pop()
+	    || nworkareas == NULL
+	    || type_returned != gdk_x11_xatom_to_atom (XA_CARDINAL)
+	    || format_returned != 32)
+		g_warning("Can not calculate _NET_NUMBER_OF_DESKTOPS");
+	
+	/* Note : gdk_property_get() is broken (API documents admit
+	 * this).  As a length argument, it expects the number of
+	 * _bytes_ of data you require.  Internally, gdk_property_get
+	 * converts that value to a count of 32 bit (4 byte) elements.
+	 * However, the length returned is in bytes, but is calculated
+	 * via the count of returned elements * sizeof(long).  This
+	 * means on a 64 bit system, the number of bytes you have to
+	 * request does not correspond to the number of bytes you get
+	 * back, and is the reason for the workaround below.
+	 */ 
+	gdk_error_trap_push ();
+	if ((*nworkareas < 1) 
+	    || !gdk_property_get (window,
+				  gdk_atom_intern ("_NET_WORKAREA", FALSE),
+				  gdk_x11_xatom_to_atom (XA_CARDINAL),
+				  0, ((*nworkareas) * 4 * 4), FALSE,
+				  &type_returned,
+				  &format_returned,
+				  &length_returned,
+				  (guchar **) &workareas)) {
+		g_warning("Can not get _NET_WORKAREA");
 		workareas = NULL;
 	}
 
 	if (gdk_error_trap_pop ()
 	    || workareas == NULL
 	    || type_returned != gdk_x11_xatom_to_atom (XA_CARDINAL)
-	    || (length_returned % 4) != 0
+	    || ((*nworkareas) * 4 * sizeof(long)) != length_returned
 	    || format_returned != 32) {
+		g_warning("Can not determine workarea, guessing at layout");
 		nautilus_icon_container_set_margins (icon_container,
 						     0, 0, 0, 0);
 	} else {
@@ -200,6 +235,9 @@
 			icon_container, screen, workareas, length_returned / sizeof (long));
 	}
 
+	if (nworkareas != NULL)
+		g_free (nworkareas);
+
 	if (workareas != NULL)
 		g_free (workareas);
 }
