Sfoglia il codice sorgente

Preserve cwd after spawn

Brian Fiete 4 anni fa
parent
commit
8d2b222c1a
1 ha cambiato i file con 13 aggiunte e 0 eliminazioni
  1. 13 0
      BeefySysLib/platform/posix/PosixCommon.cpp

+ 13 - 0
BeefySysLib/platform/posix/PosixCommon.cpp

@@ -844,6 +844,8 @@ BFP_EXPORT BfpSpawn* BFP_CALLTYPE BfpSpawn_Create(const char* inTargetPath, cons
 
     //printf("BfpSpawn_Create: %s %s %x\n", inTargetPath, args, flags);    
 
+    char* prevWorkingDir = NULL;
+
 	if ((workingDir != NULL) && (workingDir[0] != 0))
 	{
 		if (chdir(workingDir) != 0)
@@ -852,8 +854,19 @@ BFP_EXPORT BfpSpawn* BFP_CALLTYPE BfpSpawn_Create(const char* inTargetPath, cons
 			OUTRESULT(BfpSpawnResult_UnknownError);
 			return NULL;
 		}
+
+        prevWorkingDir = getcwd(NULL, 0);
 	}
 
+    defer(
+        {
+            if (prevWorkingDir != NULL)
+            {
+                chdir(prevWorkingDir);
+                free(prevWorkingDir);
+            }
+        });
+
 	String newArgs;
 	String tempFileName;