This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
amigaos4: use our own environ implementation
[perl5.git] / util.c
diff --git a/util.c b/util.c
index c2df74d..5bc3aa5 100644 (file)
--- a/util.c
+++ b/util.c
@@ -2055,6 +2055,9 @@ void
 Perl_my_setenv(pTHX_ const char *nam, const char *val)
 {
   dVAR;
 Perl_my_setenv(pTHX_ const char *nam, const char *val)
 {
   dVAR;
+#if defined(__amigaos4__)
+  amigaos4_obtain_environ(__FUNCTION__);
+#endif
 #ifdef USE_ITHREADS
   /* only parent thread can modify process environment */
   if (PL_curinterp == aTHX)
 #ifdef USE_ITHREADS
   /* only parent thread can modify process environment */
   if (PL_curinterp == aTHX)
@@ -2096,7 +2099,11 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val)
                 environ[i] = environ[i+1];
                 i++;
             }
                 environ[i] = environ[i+1];
                 i++;
             }
+#if defined(__amigaos4__)
+            goto my_setenv_out;
+#else
             return;
             return;
+#endif
         }
         if (!environ[i]) {                 /* does not exist yet */
             environ = (char**)safesysrealloc(environ, (i+2) * sizeof(char*));
         }
         if (!environ[i]) {                 /* does not exist yet */
             environ = (char**)safesysrealloc(environ, (i+2) * sizeof(char*));
@@ -2157,6 +2164,10 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val)
     }
 #endif
   }
     }
 #endif
   }
+#if defined(__amigaos4__)
+my_setenv_out:
+  amigaos4_release_environ(__FUNCTION__);
+#endif
 }
 
 #else /* WIN32 || NETWARE */
 }
 
 #else /* WIN32 || NETWARE */