SDL: unix: OpenURL: Move unsetenv above vfork

From d4e1b4974ac8711cc89bd187c9f412f84771372b Mon Sep 17 00:00:00 2001
From: Sebastian Krzyszkowiak <[EMAIL REDACTED]>
Date: Sun, 1 Aug 2021 09:15:26 +0200
Subject: [PATCH] unix: OpenURL: Move unsetenv above vfork

From the vfork manpage:

> The  vfork()  function has the same effect as fork(2), except that
> the behavior is undefined if the process created by vfork() either
> modifies any data other than a variable of type pid_t used to store
> the return value from vfork(), or returns from the function in which
> vfork() was called, or calls any other function before successfully
> calling _exit(2) or one of the exec(3) family of functions.

unsetenv is still called inside a child process, so it does not
influence the rest of the application.
---
 src/misc/unix/SDL_sysurl.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/misc/unix/SDL_sysurl.c b/src/misc/unix/SDL_sysurl.c
index 987f91ed8..198b425e8 100644
--- a/src/misc/unix/SDL_sysurl.c
+++ b/src/misc/unix/SDL_sysurl.c
@@ -33,11 +33,12 @@ SDL_SYS_OpenURL(const char *url)
 {
     const pid_t pid1 = fork();
     if (pid1 == 0) {  /* child process */
+        pid_t pid2;
+        /* Clear LD_PRELOAD so Chrome opens correctly when this application is launched by Steam */
+        unsetenv("LD_PRELOAD");
         /* Notice this is vfork and not fork! */
-        const pid_t pid2 = vfork();
+        pid2 = vfork();
         if (pid2 == 0) {  /* Grandchild process will try to launch the url */
-            /* Clear LD_PRELOAD so Chrome opens correctly when this application is launched by Steam */
-            unsetenv("LD_PRELOAD");
             execlp("xdg-open", "xdg-open", url, NULL);
             _exit(EXIT_FAILURE);
         } else if (pid2 < 0) {   /* There was an error forking */