Browse Source

Fix random compile/link errors because of wrong PATH memcpy

Arthur Yefimov 3 năm trước cách đây
mục cha
commit
0523924ed6
2 tập tin đã thay đổi với 5 bổ sung4 xóa
  1. 2 2
      Data/bin/compile.bat
  2. 3 2
      src/term/term_win32.c

+ 2 - 2
Data/bin/compile.bat

@@ -15,7 +15,7 @@ SET DIR=%~dp0
 
 SET FNAME=%1
 
-IF "%NFAME:~0,1%"=="\" GOTO ENDIF1
+IF "%FNAME:~0,1%"=="\" GOTO ENDIF1
   SET FNAME=..\%FNAME%
 :ENDIF1
 
@@ -25,7 +25,7 @@ CD _Build
 SET OFRDIR=%DIR%OfrontPlus\Target\Win32
 SET PATH=%OFRDIR%;%PATH%
 SET OBERON=.;%DIR%..\..\src;%OFRDIR%\Lib\Sym
-SET OFR=ofront+ -s -88 -7w
+SET OFR=ofront+ -s -48 -7w
 
 ECHO ON
 @%OFR% %2 %FNAME%

+ 3 - 2
src/term/term_win32.c

@@ -182,7 +182,7 @@ int StartProcessIn(char *process, char *dir) {
   childEnvPath[0] = '.';
   childEnvPath[1] = '.';
   childEnvPath[2] = ';';
-  memcpy(childEnvPath + 3, pszOldVal, pathSize);
+  memcpy(childEnvPath + 3, pszOldVal, pathSize + 1);
   
   // Set value of PATH for child process to inherit
   if (!SetEnvironmentVariable(TEXT("PATH"), childEnvPath)) {
@@ -348,12 +348,13 @@ void ErrorExit(PTSTR lpszFunction) {
 
 int RunProcessIn(char *cmd, char *dir, char *buf, int limit, int *len, int *err) {
   int success = 0;
+  *len = 0;
   if (StartProcessIn(cmd, dir)) {
     int n, i = 0;
     do {
       ReadFromProcess(&buf[i], &n, limit - i); //!FIXME add inner loop
       if (n > 0) i += n;
-      Sleep(10);
+      Sleep(1);
     } while (!ProcessFinished(err) && (i < limit));
     *len = i;
     success = 1;