mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 02:30:46 +00:00
CON parser cleanup: when getting a value from labelcode[], assume that it
represents a pointer into the script for label types other than LABEL_DEFINE instead of checking inclusion of the value in the script bounds. This assertion was tested with WGR2 SVN. git-svn-id: https://svn.eduke32.com/eduke32@2150 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
3285cfef8c
commit
fabbcdcf56
1 changed files with 15 additions and 1 deletions
|
@ -1664,9 +1664,18 @@ static int32_t C_GetNextValue(int32_t type)
|
|||
initprintf("%s:%d: debug: accepted %s label `%s'.\n",g_szScriptFileName,g_lineNumber,gl,label+(i<<6));
|
||||
Bfree(gl);
|
||||
}
|
||||
#if 0
|
||||
if (labeltype[i] != LABEL_DEFINE && labelcode[i] >= (intptr_t)&script[0] && labelcode[i] < (intptr_t)&script[g_scriptSize])
|
||||
bitptr[(g_scriptPtr-script)>>3] |= (BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
else bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
else
|
||||
bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
#else
|
||||
if ((labeltype[i]&LABEL_DEFINE)==0)
|
||||
bitptr[(g_scriptPtr-script)>>3] |= (BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
else // the 'define' label type is the only one that doesn't reference the script
|
||||
bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
#endif
|
||||
|
||||
*(g_scriptPtr++) = labelcode[i];
|
||||
textptr += l;
|
||||
return labeltype[i];
|
||||
|
@ -1956,9 +1965,14 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
|
||||
initprintf("%s:%d: debug: accepted state label `%s'.\n",g_szScriptFileName,g_lineNumber,label+(j<<6));
|
||||
*g_scriptPtr = labelcode[j];
|
||||
#if 0
|
||||
if (labelcode[j] >= (intptr_t)&script[0] && labelcode[j] < (intptr_t)&script[g_scriptSize])
|
||||
bitptr[(g_scriptPtr-script)>>3] |= (BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
else bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
#else
|
||||
// 'state' type labels are always script addresses, as far as I can see
|
||||
bitptr[(g_scriptPtr-script)>>3] |= (BITPTR_POINTER<<((g_scriptPtr-script)&7));
|
||||
#endif
|
||||
g_scriptPtr++;
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue