From 72b279236e425f7c3373f21af6e53369d2e1318d Mon Sep 17 00:00:00 2001
From: Ove Kaaven <ovek@arcticnet.no>
Date: Fri, 23 Oct 1998 16:20:12 +0000
Subject: [PATCH] Fixed DOS environment passing.

---
 loader/dos/module.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/loader/dos/module.c b/loader/dos/module.c
index 4a7471d2acf..fa880048be4 100644
--- a/loader/dos/module.c
+++ b/loader/dos/module.c
@@ -131,7 +131,7 @@ static WORD MZ_InitEnvironment( LPDOSTASK lpDosTask, LPCSTR env, LPCSTR name )
 
  if (env) {
   /* get size of environment block */
-  while (env[sz++]) sz+=strlen(env+sz);
+  while (env[sz++]) sz+=strlen(env+sz)+1;
  } else sz++;
  /* allocate it */
  envblk=DOSMEM_GetBlock(lpDosTask->hModule,sz+sizeof(WORD)+strlen(name)+1,&seg);
@@ -364,6 +364,7 @@ HINSTANCE16 MZ_CreateProcess( LPCSTR name, LPCSTR cmdline, LPCSTR env,
  LPDOSTASK lpDosTask = NULL; /* keep gcc from complaining */
  HMODULE16 hModule;
  HINSTANCE16 hInstance;
+ PDB32 *pdb = PROCESS_Current();
  TDB *pTask = (TDB*)GlobalLock16( GetCurrentTask() );
  NE_MODULE *pModule = pTask ? NE_GetPtr( pTask->hModule ) : NULL;
  HFILE16 hFile;
@@ -378,6 +379,7 @@ HINSTANCE16 MZ_CreateProcess( LPCSTR name, LPCSTR cmdline, LPCSTR env,
  if ((hFile = OpenFile16( name, &ofs, OF_READ )) == HFILE_ERROR16)
   return 2; /* File not found */
 
+ if ((!env)&&pdb) env = pdb->env_db->environ;
  if (alloc) {
   if ((hModule = MODULE_CreateDummyModule(&ofs)) < 32)
    return hModule;
-- 
GitLab