Index: /branches/libc-0.6/src/emx/src/emxomf/emxomfld.c
===================================================================
--- /branches/libc-0.6/src/emx/src/emxomf/emxomfld.c	(revision 3461)
+++ /branches/libc-0.6/src/emx/src/emxomf/emxomfld.c	(revision 3462)
@@ -634,8 +634,20 @@
     char            szLooklike[32];
     pid_t           pid = getpid();
-    const char *    pszTmp = getenv("TMP");
-    if (!pszTmp)    pszTmp = getenv("TMPDIR");
-    if (!pszTmp)    pszTmp = getenv("TEMP");
-    if (!pszTmp)    pszTmp = ".";
+    static char     s_szTmp[_MAX_PATH + 1];
+
+    /* We need to apply _realrealpath to the tmpdir, so resolve that once and for all. */
+    if (!s_szTmp[0]) 
+    {
+        const char *    pszTmp = getenv("TMP");
+        if (!pszTmp)    pszTmp = getenv("TMPDIR");
+        if (!pszTmp)    pszTmp = getenv("TEMP");
+        if (!pszTmp)    pszTmp = ".";
+        if (!_realrealpath(pszTmp, s_szTmp, sizeof(s_szTmp)))
+        {
+            printf("emxomfld: _realrealpath failed on '%s'!!!\n", pszTmp);
+            exit(1);
+        }
+    }
+
     if (pszLooklike)
     {
@@ -664,5 +676,5 @@
             return -1;
         gettimeofday(&tv, NULL);
-        sprintf(pszFile, "%s\\%s%s%x%lx%d%lx%s", pszTmp, pszPrefix, pszLooklike, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
+        sprintf(pszFile, "%s\\%s%s%x%lx%d%lx%s", s_szTmp, pszPrefix, pszLooklike, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
     } while (!stat(pszFile, &s));
 
Index: /branches/libc-0.6/src/emx/src/emxomf/weakld.c
===================================================================
--- /branches/libc-0.6/src/emx/src/emxomf/weakld.c	(revision 3461)
+++ /branches/libc-0.6/src/emx/src/emxomf/weakld.c	(revision 3462)
@@ -3611,8 +3611,19 @@
     unsigned        c = 0;
     pid_t           pid = getpid();
-    const char *    pszTmp = getenv("TMP");
-    if (!pszTmp)    pszTmp = getenv("TMPDIR");
-    if (!pszTmp)    pszTmp = getenv("TEMP");
-    if (!pszTmp)    pszTmp = ".";
+    static char     s_szTmp[_MAX_PATH + 1];
+    
+    /* We need to apply _realrealpath to the tmpdir, so resolve that once and for all. */
+    if (!s_szTmp[0])
+    {
+        const char *    pszTmp = getenv("TMP");
+        if (!pszTmp)    pszTmp = getenv("TMPDIR");
+        if (!pszTmp)    pszTmp = getenv("TEMP");
+        if (!pszTmp)    pszTmp = ".";
+        if (!_realrealpath(pszTmp, s_szTmp, sizeof(s_szTmp)))
+        {
+            printf("emxomfld: _realrealpath failed on '%s'!!!\n", pszTmp);
+            exit(1);
+        }
+    }
 
     do
@@ -3622,5 +3633,5 @@
             return -1;
         gettimeofday(&tv, NULL);
-        sprintf(pszFile, "%s\\%s%x%lx%d%lx%s", pszTmp, pszPrefix, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
+        sprintf(pszFile, "%s\\%s%x%lx%d%lx%s", s_szTmp, pszPrefix, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
     } while (!stat(pszFile, &s));
 
Index: /trunk/emx/src/emxomf/emxomfld.c
===================================================================
--- /trunk/emx/src/emxomf/emxomfld.c	(revision 3461)
+++ /trunk/emx/src/emxomf/emxomfld.c	(revision 3462)
@@ -634,8 +634,20 @@
     char            szLooklike[32];
     pid_t           pid = getpid();
-    const char *    pszTmp = getenv("TMP");
-    if (!pszTmp)    pszTmp = getenv("TMPDIR");
-    if (!pszTmp)    pszTmp = getenv("TEMP");
-    if (!pszTmp)    pszTmp = ".";
+    static char     s_szTmp[_MAX_PATH + 1];
+
+    /* We need to apply _realrealpath to the tmpdir, so resolve that once and for all. */
+    if (!s_szTmp[0]) 
+    {
+        const char *    pszTmp = getenv("TMP");
+        if (!pszTmp)    pszTmp = getenv("TMPDIR");
+        if (!pszTmp)    pszTmp = getenv("TEMP");
+        if (!pszTmp)    pszTmp = ".";
+        if (!_realrealpath(pszTmp, s_szTmp, sizeof(s_szTmp)))
+        {
+            printf("emxomfld: _realrealpath failed on '%s'!!!\n", pszTmp);
+            exit(1);
+        }
+    }
+
     if (pszLooklike)
     {
@@ -664,5 +676,5 @@
             return -1;
         gettimeofday(&tv, NULL);
-        sprintf(pszFile, "%s\\%s%s%x%lx%d%lx%s", pszTmp, pszPrefix, pszLooklike, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
+        sprintf(pszFile, "%s\\%s%s%x%lx%d%lx%s", s_szTmp, pszPrefix, pszLooklike, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
     } while (!stat(pszFile, &s));
 
Index: /trunk/emx/src/emxomf/weakld.c
===================================================================
--- /trunk/emx/src/emxomf/weakld.c	(revision 3461)
+++ /trunk/emx/src/emxomf/weakld.c	(revision 3462)
@@ -3611,8 +3611,19 @@
     unsigned        c = 0;
     pid_t           pid = getpid();
-    const char *    pszTmp = getenv("TMP");
-    if (!pszTmp)    pszTmp = getenv("TMPDIR");
-    if (!pszTmp)    pszTmp = getenv("TEMP");
-    if (!pszTmp)    pszTmp = ".";
+    static char     s_szTmp[_MAX_PATH + 1];
+    
+    /* We need to apply _realrealpath to the tmpdir, so resolve that once and for all. */
+    if (!s_szTmp[0])
+    {
+        const char *    pszTmp = getenv("TMP");
+        if (!pszTmp)    pszTmp = getenv("TMPDIR");
+        if (!pszTmp)    pszTmp = getenv("TEMP");
+        if (!pszTmp)    pszTmp = ".";
+        if (!_realrealpath(pszTmp, s_szTmp, sizeof(s_szTmp)))
+        {
+            printf("emxomfld: _realrealpath failed on '%s'!!!\n", pszTmp);
+            exit(1);
+        }
+    }
 
     do
@@ -3622,5 +3633,5 @@
             return -1;
         gettimeofday(&tv, NULL);
-        sprintf(pszFile, "%s\\%s%x%lx%d%lx%s", pszTmp, pszPrefix, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
+        sprintf(pszFile, "%s\\%s%x%lx%d%lx%s", s_szTmp, pszPrefix, pid, tv.tv_sec, c, tv.tv_usec, pszSuffix);
     } while (!stat(pszFile, &s));
 
