https://gcc.gnu.org/g:266ea973f954d960e18363fcd3b0e3a6902b14b8

commit r16-7883-g266ea973f954d960e18363fcd3b0e3a6902b14b8
Author: Jerry DeLisle <[email protected]>
Date:   Tue Mar 3 20:43:54 2026 -0800

    Fortran: Fix failures on windows and hpux systems [PR124330]
    
    Fix missed hunk in previous commit.
    
            PR fortran/124330
    
    libgfortran/ChangeLog:
    
            * caf/shmem/shared_memory.c (shared_memory_init): Use
            putenv() for HPUX and as a fallback where setenv()
            is not available.

Diff:
---
 libgfortran/caf/shmem/shared_memory.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/libgfortran/caf/shmem/shared_memory.c 
b/libgfortran/caf/shmem/shared_memory.c
index 69c3db6aca21..f3436c65e46a 100644
--- a/libgfortran/caf/shmem/shared_memory.c
+++ b/libgfortran/caf/shmem/shared_memory.c
@@ -244,16 +244,23 @@ shared_memory_init (shared_memory_act *mem, size_t size)
 #endif
   if (!base_ptr)
     {
-#define bufsize 20
-      char buffer[bufsize];
-
-      snprintf (buffer, bufsize, "%p", mem->glbl.base);
-#ifdef HAVE_SETENV
-      setenv (ENV_BASE, buffer, 1);
+#if defined(HAVE_SETENV)
+      char val[20];
+      snprintf (val, 20, "%p", mem->glbl.base);
+      setenv (ENV_BASE, val, 1);
+#elif defined(WIN32)
+      char val[20];
+      snprintf (val, 20, "%p", mem->glbl.base);
+      SetEnvironmentVariable (ENV_BASE, val);
 #else
-      SetEnvironmentVariable (ENV_BASE, buffer);
+      char buffer[28];
+      int res;
+
+      /* HP-UX / Legacy Fallback using putenv */
+      res = snprintf (buffer, 28, "%s=%p", "ENV_BASE", mem->glbl.base);
+      if (res != -1)
+       putenv (buffer);
 #endif
-#undef bufsize
     }
   mem->size = size;
   if (!env_val)

Reply via email to