--- gambas3-3.4.0-orig/main/gbx/gbx_c_process.c	2013-02-23 22:04:24.716946415 +1100
+++ gambas3-3.4.0/main/gbx/gbx_c_process.c	2013-02-23 22:16:35.364978460 +1100
@@ -404,6 +404,7 @@
 	char **argv;
 	CARRAY *array;
 	int i, n;
+	char pwd_unset = 1;
 	sigset_t sig, old;
 
 	/* for terminal */
@@ -668,9 +669,6 @@
 					abort_child(CHILD_CANNOT_PLUG_OUTPUT);
 			}
 		}
-
-		// Return to the parent working directory
-		FILE_chdir(PROJECT_oldcwd);
 		
 		if (env)
 		{
@@ -679,11 +677,20 @@
 			for (i = 0; i < n; i++)
 			{
 				str = ((char **)env->data)[i];
+				if (strncmp(str,"PWD=",4) == 0)
+				{
+					FILE_chdir(str+4);
+					pwd_unset = 0;
+				}
 				if (putenv(str))
 					ERROR_warning("cannot set environment string: %s", str);
 			}
 		}
 		
+		if (pwd_unset)
+			// Return to the parent working directory
+			FILE_chdir(PROJECT_oldcwd);
+		
 		execvp(argv[0], (char **)argv);
 		//execve(argv[0], (char **)argv, environ);
 		abort_child(CHILD_CANNOT_EXEC);
