Skip to content

Commit 571cf11

Browse files
lpprojPerditionC
authored andcommitted
fix 2nd parameter of "DOS=" statement in config.sys does not take effect in some cases:
* preceding space(s): e.g. "DOS=UMB, HIGH" * after unknown keyword: e.g. "DOS=NOUMB,HIGH"
1 parent 34c452a commit 571cf11

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

kernel/config.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,14 +1294,17 @@ STATIC VOID Dosmem(BYTE * pLine)
12941294
BYTE *pTmp;
12951295
BYTE UMBwanted = FALSE;
12961296

1297-
pLine = GetStringArg(pLine, szBuf);
1298-
1297+
GetStringArg(pLine, szBuf);
1298+
strcpy(szBuf, pLine);
12991299
strupr(szBuf);
13001300

13011301
/* printf("DOS called with %s\n", szBuf); */
13021302

13031303
for (pTmp = szBuf;;)
13041304
{
1305+
while (*pTmp == ' ' || *pTmp == '\t')
1306+
pTmp++;
1307+
13051308
if (memcmp(pTmp, "UMB", 3) == 0)
13061309
{
13071310
UMBwanted = TRUE;
@@ -1312,11 +1315,26 @@ STATIC VOID Dosmem(BYTE * pLine)
13121315
HMAState = HMA_REQ;
13131316
pTmp += 4;
13141317
}
1318+
if (memcmp(pTmp, "LOW", 3) == 0)
1319+
{
1320+
HMAState = HMA_LOW;
1321+
pTmp += 3;
1322+
}
1323+
if (memcmp(pTmp, "NOUMB", 5) == 0)
1324+
{
1325+
UMBwanted = FALSE;
1326+
pTmp += 5;
1327+
}
13151328
/* if (memcmp(pTmp, "CLAIMINIT",9) == 0) { INITDataSegmentClaimed = 0; pTmp += 9; }*/
13161329
pTmp = skipwh(pTmp);
13171330

1331+
if (*pTmp == '\0')
1332+
break;
13181333
if (*pTmp != ',')
1334+
{
1335+
CfgFailure(pLine + (pTmp - szBuf));
13191336
break;
1337+
}
13201338
pTmp++;
13211339
}
13221340

0 commit comments

Comments
 (0)