Misc CON fixups

git-svn-id: https://svn.eduke32.com/eduke32@7236 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2018-11-18 18:14:43 +00:00
parent 2f9f16de7f
commit 38c473851b
2 changed files with 106 additions and 119 deletions

View file

@ -824,9 +824,9 @@ char *bitptr; // pointer to bitmap of which bytecode positions contain pointers
#define BITPTR_IS_POINTER(x) (bitptr[(x)>>3] & (1<<((x) &7)))
#if !defined LUNATIC
hashtable_t h_arrays = { MAXGAMEARRAYS>>1, NULL };
hashtable_t h_gamevars = { MAXGAMEVARS>>1, NULL };
hashtable_t h_labels = { 11264>>1, NULL };
hashtable_t h_arrays = { MAXGAMEARRAYS >> 1, NULL };
hashtable_t h_gamevars = { MAXGAMEVARS >> 1, NULL };
hashtable_t h_labels = { 11264 >> 1, NULL };
// "magic" number for { and }, overrides line number in compiled code for later detection
#define IFELSE_MAGIC 31337
@ -885,13 +885,13 @@ static inline bool ispecial(const char c)
c == ',' || c == ';' || (c == 0x0a /*&& ++g_lineNumber*/));
}
static inline void C_NextLine(void)
static inline void scriptSkipLine(void)
{
while (*textptr != 0x0a && *textptr != 0x0d && *textptr != 0)
textptr++;
}
static inline void C_SkipSpace(void)
static inline void scriptSkipSpaces(void)
{
while (*textptr == ' ' || *textptr == '\t')
textptr++;
@ -918,7 +918,7 @@ static void C_SkipComments(void)
case '/': // C++ style comment
if (!(g_errorCnt || g_warningCnt) && g_scriptDebug > 1)
initprintf("%s:%d: debug: got comment.\n",g_scriptFileName,g_lineNumber);
C_NextLine();
scriptSkipLine();
continue;
case '*': // beginning of a C style comment
if (!(g_errorCnt || g_warningCnt) && g_scriptDebug > 1)
@ -950,7 +950,7 @@ static void C_SkipComments(void)
default:
C_ReportError(-1);
initprintf("%s:%d: error: malformed comment.\n", g_scriptFileName, g_lineNumber);
C_NextLine();
scriptSkipLine();
g_errorCnt++;
continue;
}
@ -1052,14 +1052,11 @@ static int32_t C_GetNextGameArrayName(void)
return i;
}
static int32_t C_GetKeyword(void)
static int C_GetKeyword(void)
{
int32_t i;
char *temptextptr;
C_SkipComments();
temptextptr = textptr;
char *temptextptr = textptr;
if (*temptextptr == 0) // EOF
return -2;
@ -1071,7 +1068,8 @@ static int32_t C_GetKeyword(void)
return 0;
}
i = 0;
int i = 0;
while (isaltok(*temptextptr))
tempbuf[i++] = *(temptextptr++);
tempbuf[i] = 0;
@ -1079,16 +1077,14 @@ static int32_t C_GetKeyword(void)
return hash_find(&h_keywords,tempbuf);
}
static int32_t C_GetNextKeyword(void) //Returns its code #
static int C_GetNextKeyword(void) //Returns its code #
{
int32_t i, l;
C_SkipComments();
if (*textptr == 0) // EOF
return -2;
l = 0;
int l = 0;
while (isaltok(*(textptr+l)))
{
tempbuf[l] = textptr[l];
@ -1096,6 +1092,7 @@ static int32_t C_GetNextKeyword(void) //Returns its code #
}
tempbuf[l] = 0;
int i;
if (EDUKE32_PREDICT_TRUE((i = hash_find(&h_keywords,tempbuf)) >= 0))
{
if (i == CON_LEFTBRACE || i == CON_RIGHTBRACE || i == CON_NULLOP)
@ -1403,11 +1400,10 @@ static void C_GetNextVarType(int32_t type)
}
return;
}
// initprintf("not an array");
id=GetDefID(LAST_LABEL);
if (id<0) //gamevar not found
{
if (!type && !g_labelsOnly)
if (EDUKE32_PREDICT_TRUE(!type && !g_labelsOnly))
{
//try looking for a define instead
Bstrcpy(tempbuf,LAST_LABEL);
@ -1450,10 +1446,9 @@ static void C_GetNextVarType(int32_t type)
#define C_GetNextVar() C_GetNextVarType(0)
static inline void C_GetManyVarsType(int32_t type, int32_t num)
static FORCE_INLINE void C_GetManyVarsType(int32_t type, int num)
{
int32_t i;
for (i=num-1; i>=0; i--)
for (; num>0; --num)
C_GetNextVarType(type);
}
@ -1509,8 +1504,8 @@ static int32_t C_GetNextValue(int32_t type)
scriptWriteValue(0);
textptr += l;
char *el = C_GetLabelType(type);
char *gl = C_GetLabelType(labeltype[i]);
char * const el = C_GetLabelType(type);
char * const gl = C_GetLabelType(labeltype[i]);
C_ReportError(-1);
initprintf("%s:%d: warning: expected %s, found %s.\n",g_scriptFileName,g_lineNumber,el,gl);
g_warningCnt++;
@ -1607,7 +1602,7 @@ static int C_GetStructureIndexes(bool const labelsonly, hashtable_t const * cons
C_GetNextLabelName();
int32_t const labelNum = C_GetLabelNameOffset(table, Bstrtolower(LAST_LABEL));
int const labelNum = C_GetLabelNameOffset(table, Bstrtolower(LAST_LABEL));
if (EDUKE32_PREDICT_FALSE(labelNum == -1))
{
@ -1619,26 +1614,24 @@ static int C_GetStructureIndexes(bool const labelsonly, hashtable_t const * cons
return labelNum;
}
static inline int32_t C_IntPow2(int32_t const v)
static FORCE_INLINE bool C_IntPow2(int32_t const v)
{
return ((v!=0) && (v&(v-1))==0);
}
static inline uint32_t C_Pow2IntLogBase2(int32_t const v)
{
static const uint32_t b[] = {0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0,
0xFF00FF00, 0xFFFF0000
};
static constexpr uint32_t b[] = { 0xAAAAAAAA, 0xCCCCCCCC, 0xF0F0F0F0, 0xFF00FF00, 0xFFFF0000 };
uint32_t r = (v & b[0]) != 0;
for (bssize_t i = 4; i > 0; i--)
for (int i = 0; i < ARRAY_SSIZE(b); ++i)
r |= ((v & b[i]) != 0) << i;
return r;
}
static int32_t C_CheckMalformedBranch(intptr_t lastScriptPtr)
static bool C_CheckMalformedBranch(intptr_t lastScriptPtr)
{
switch (C_GetKeyword())
{
@ -1653,12 +1646,12 @@ static int32_t C_CheckMalformedBranch(intptr_t lastScriptPtr)
g_warningCnt++;
initprintf("%s:%d: warning: malformed `%s' branch\n",g_scriptFileName,g_lineNumber,
VM_GetKeywordForID(*(g_scriptPtr) & VM_INSTMASK));
return 1;
return true;
}
return 0;
return false;
}
static int32_t C_CheckEmptyBranch(int32_t tw, intptr_t lastScriptPtr)
static bool C_CheckEmptyBranch(int tw, intptr_t lastScriptPtr)
{
// ifrnd and the others actually do something when the condition is executed
if ((Bstrncmp(VM_GetKeywordForID(tw), "if", 2) && tw != CON_ELSE) ||
@ -1666,7 +1659,7 @@ static int32_t C_CheckEmptyBranch(int32_t tw, intptr_t lastScriptPtr)
tw == CON_IFPDISTL || tw == CON_IFPDISTG || tw == CON_IFGOTWEAPONCE)
{
g_ifElseAborted = 0;
return 0;
return false;
}
if ((*(g_scriptPtr) & VM_INSTMASK) != CON_NULLOP || *(g_scriptPtr)>>12 != IFELSE_MAGIC)
@ -1680,36 +1673,36 @@ static int32_t C_CheckEmptyBranch(int32_t tw, intptr_t lastScriptPtr)
initprintf("%s:%d: warning: empty `%s' branch\n",g_scriptFileName,g_lineNumber,
VM_GetKeywordForID(*(g_scriptPtr) & VM_INSTMASK));
*(g_scriptPtr) = (CON_NULLOP + (IFELSE_MAGIC<<12));
return 1;
return true;
}
return 0;
return false;
}
static int32_t C_CountCaseStatements()
static int C_CountCaseStatements()
{
char *temptextptr = textptr;
int32_t temp_ScriptLineNumber = g_lineNumber;
intptr_t scriptoffset = (unsigned)(g_scriptPtr-apScript);
intptr_t caseoffset = (unsigned)(g_caseScriptPtr-apScript);
// int32_t i;
char *const temptextptr = textptr;
int const backupLineNumber = g_lineNumber;
int const backupNumCases = g_numCases;
uint32_t const casePtrOffset = g_caseScriptPtr - apScript;
uint32_t const scriptPtrOffset = g_scriptPtr - apScript;
g_numCases=0;
g_caseScriptPtr=NULL;
//Bsprintf(g_szBuf,"CSS: %.12s",textptr);
//AddLog(g_szBuf);
g_numCases = 0;
g_caseScriptPtr = NULL;
C_ParseCommand(1);
// since we processed the endswitch, we need to re-increment g_checkingSwitch
g_checkingSwitch++;
textptr=temptextptr;
g_scriptPtr = (intptr_t *)(apScript+scriptoffset);
int const numCases = g_numCases;
g_lineNumber = temp_ScriptLineNumber;
textptr = temptextptr;
g_lineNumber = backupLineNumber;
g_numCases = backupNumCases;
g_caseScriptPtr = (intptr_t *)(apScript + casePtrOffset);
g_scriptPtr = (intptr_t *)(apScript + scriptPtrOffset);
int32_t const lCount=g_numCases;
g_caseScriptPtr = (intptr_t *)(apScript+caseoffset);
g_numCases = 0;
return lCount;
return numCases;
}
static void C_Include(const char *confile)
@ -3117,7 +3110,7 @@ DO_DEFSTATE:
if (EDUKE32_PREDICT_FALSE(!g_checkingIfElse))
{
g_scriptPtr--;
intptr_t *tempscrptr = g_scriptPtr;
auto const tempscrptr = g_scriptPtr;
g_warningCnt++;
C_ReportError(-1);
@ -3154,7 +3147,7 @@ DO_DEFSTATE:
if (C_CheckEmptyBranch(tw, lastScriptPtr))
continue;
intptr_t *tempscrptr = (intptr_t *) apScript+offset;
auto const tempscrptr = (intptr_t *) apScript+offset;
scriptWritePointer((intptr_t)g_scriptPtr, tempscrptr);
continue;
@ -3163,7 +3156,7 @@ DO_DEFSTATE:
case CON_SETSECTOR:
case CON_GETSECTOR:
{
int32_t const labelNum = C_GetStructureIndexes(1, &h_sector);
int const labelNum = C_GetStructureIndexes(1, &h_sector);
if (labelNum == -1)
continue;
@ -3202,7 +3195,7 @@ DO_DEFSTATE:
case CON_SETWALL:
case CON_GETWALL:
{
int32_t const labelNum = C_GetStructureIndexes(1, &h_wall);
int const labelNum = C_GetStructureIndexes(1, &h_wall);
if (labelNum == -1)
continue;
@ -3216,7 +3209,7 @@ DO_DEFSTATE:
case CON_SETPLAYER:
case CON_GETPLAYER:
{
int32_t const labelNum = C_GetStructureIndexes(1, &h_player);
int const labelNum = C_GetStructureIndexes(1, &h_player);
if (labelNum == -1)
continue;
@ -3233,7 +3226,7 @@ DO_DEFSTATE:
case CON_SETINPUT:
case CON_GETINPUT:
{
int32_t const labelNum = C_GetStructureIndexes(1, &h_input);
int const labelNum = C_GetStructureIndexes(1, &h_input);
if (labelNum == -1)
continue;
@ -3247,7 +3240,7 @@ DO_DEFSTATE:
case CON_SETTILEDATA:
case CON_GETTILEDATA:
{
int32_t const labelNum = C_GetStructureIndexes(0, &h_tiledata);
int const labelNum = C_GetStructureIndexes(0, &h_tiledata);
if (labelNum == -1)
continue;
@ -3279,7 +3272,7 @@ DO_DEFSTATE:
textptr++;
C_GetNextLabelName();
int32_t const labelNum=C_GetLabelNameID(UserdefsLabels,&h_userdef,Bstrtolower(LAST_LABEL));
int const labelNum=C_GetLabelNameID(UserdefsLabels,&h_userdef,Bstrtolower(LAST_LABEL));
if (EDUKE32_PREDICT_FALSE(labelNum == -1))
{
@ -3463,7 +3456,7 @@ DO_DEFSTATE:
g_numCompilerWarnings++;
}
#endif
int32_t const labelNum = C_GetStructureIndexes(1, &h_tsprite);
int const labelNum = C_GetStructureIndexes(1, &h_tsprite);
if (labelNum == -1)
continue;
@ -4093,8 +4086,7 @@ DO_DEFSTATE:
case CON_WHILEVARVARL:
case CON_WHILEVARVARN:
{
intptr_t offset;
intptr_t lastScriptPtr = g_scriptPtr - &apScript[0] - 1;
intptr_t const lastScriptPtr = g_scriptPtr - apScript - 1;
g_ifElseAborted = 0;
@ -4103,7 +4095,7 @@ DO_DEFSTATE:
if (C_CheckMalformedBranch(lastScriptPtr))
continue;
offset = (unsigned)(g_scriptPtr-apScript);
intptr_t const offset = (unsigned)(g_scriptPtr-apScript);
g_scriptPtr++; // Leave a spot for the fail location
C_ParseCommand(0);
@ -4111,7 +4103,7 @@ DO_DEFSTATE:
if (C_CheckEmptyBranch(tw, lastScriptPtr))
continue;
intptr_t *tempscrptr = (intptr_t *)apScript+offset;
auto const tempscrptr = (intptr_t *)apScript+offset;
scriptWritePointer((intptr_t)g_scriptPtr, tempscrptr);
if (tw != CON_WHILEVARVARN)
@ -4147,7 +4139,7 @@ DO_DEFSTATE:
case CON_WHILEVARL:
case CON_WHILEVARN:
{
intptr_t lastScriptPtr = (g_scriptPtr-apScript-1);
intptr_t const lastScriptPtr = (g_scriptPtr-apScript-1);
g_ifElseAborted = 0;
// get the ID of the DEF
@ -4157,8 +4149,7 @@ DO_DEFSTATE:
if (C_CheckMalformedBranch(lastScriptPtr))
continue;
intptr_t *tempscrptr = g_scriptPtr;
intptr_t offset = (unsigned)(tempscrptr-apScript);
intptr_t const offset = (unsigned)(g_scriptPtr-apScript);
g_scriptPtr++; //Leave a spot for the fail location
C_ParseCommand(0);
@ -4166,7 +4157,7 @@ DO_DEFSTATE:
if (C_CheckEmptyBranch(tw, lastScriptPtr))
continue;
tempscrptr = (intptr_t *)apScript+offset;
auto const tempscrptr = (intptr_t *)apScript+offset;
scriptWritePointer((intptr_t)g_scriptPtr, tempscrptr);
if (tw != CON_WHILEVARN && tw != CON_WHILEVARL)
@ -4183,22 +4174,22 @@ DO_DEFSTATE:
case CON_FOR: // special-purpose iteration
{
C_GetNextVarType(GAMEVAR_READONLY);
C_GetNextLabelName();
int const iterType = hash_find(&h_iter, LAST_LABEL);
if (iterType < 0)
if (EDUKE32_PREDICT_FALSE(iterType < 0))
{
C_CUSTOMERROR("unknown iteration type `%s'.", LAST_LABEL);
return 1;
}
scriptWriteValue(iterType);
if (iterType >= ITER_SPRITESOFSECTOR)
C_GetNextVar();
intptr_t offset = g_scriptPtr-apScript;
intptr_t const offset = g_scriptPtr-apScript;
g_scriptPtr++; //Leave a spot for the location to jump to after completion
C_ParseCommand(0);
@ -4435,7 +4426,7 @@ DO_DEFSTATE:
for (i = 3; i < 3 + tempscrptr[1] * 2 - 2; i += 2) // sort them
{
intptr_t t = tempscrptr[i];
intptr_t n = i;
int n = i;
for (j = i + 2; j < 3 + tempscrptr[1] * 2; j += 2)
{
@ -4622,8 +4613,7 @@ repeatcase:
case CON_IFSTRENGTH:
case CON_IFWASWEAPON:
{
intptr_t offset;
intptr_t lastScriptPtr = (g_scriptPtr-&apScript[0]-1);
auto const lastScriptPtr = (g_scriptPtr-&apScript[0]-1);
g_ifElseAborted = 0;
@ -4668,8 +4658,7 @@ repeatcase:
if (C_CheckMalformedBranch(lastScriptPtr))
continue;
intptr_t *tempscrptr = g_scriptPtr;
offset = (unsigned)(tempscrptr-apScript);
intptr_t const offset = (unsigned)(g_scriptPtr-apScript);
g_scriptPtr++; //Leave a spot for the fail location
@ -4678,7 +4667,7 @@ repeatcase:
if (C_CheckEmptyBranch(tw, lastScriptPtr))
continue;
tempscrptr = (intptr_t *)apScript+offset;
auto const tempscrptr = (intptr_t *)apScript+offset;
scriptWritePointer((intptr_t)g_scriptPtr, tempscrptr);
j = C_GetKeyword();
@ -4712,16 +4701,14 @@ repeatcase:
case CON_IFSERVER:
case CON_IFSQUISHED:
{
intptr_t offset;
intptr_t lastScriptPtr = (g_scriptPtr-&apScript[0]-1);
auto const lastScriptPtr = (g_scriptPtr-&apScript[0]-1);
g_ifElseAborted = 0;
if (C_CheckMalformedBranch(lastScriptPtr))
continue;
intptr_t *tempscrptr = g_scriptPtr;
offset = (unsigned)(tempscrptr-apScript);
intptr_t const offset = (unsigned)(g_scriptPtr-apScript);
g_scriptPtr++; //Leave a spot for the fail location
@ -4730,7 +4717,7 @@ repeatcase:
if (C_CheckEmptyBranch(tw, lastScriptPtr))
continue;
tempscrptr = (intptr_t *)apScript+offset;
auto const tempscrptr = (intptr_t *)apScript+offset;
scriptWritePointer((intptr_t)g_scriptPtr, tempscrptr);
j = C_GetKeyword();
@ -4794,7 +4781,7 @@ repeatcase:
case CON_BETANAME:
g_scriptPtr--;
j = 0;
C_NextLine();
scriptSkipLine();
continue;
@ -4811,14 +4798,14 @@ repeatcase:
{
initprintf("%s:%d: error: volume number exceeds maximum volume count.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
if (EDUKE32_PREDICT_FALSE((unsigned)k > MAXLEVELS-1))
{
initprintf("%s:%d: error: level number exceeds maximum number of levels per episode.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4837,7 +4824,7 @@ repeatcase:
initprintf("%s:%d: error: skill number exceeds maximum skill count %d.\n",
g_scriptFileName,g_lineNumber, MAXSKILLS);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4856,7 +4843,7 @@ repeatcase:
initprintf("%s:%d: error: volume number exceeds maximum volume count.\n",
g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4870,14 +4857,14 @@ repeatcase:
g_scriptPtr--;
j = *g_scriptPtr;
C_SkipSpace();
scriptSkipSpaces();
if (EDUKE32_PREDICT_FALSE((unsigned)j > MAXVOLUMES-1))
{
initprintf("%s:%d: error: volume number exceeds maximum volume count.\n",
g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4892,7 +4879,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating volume name to %d characters.\n",
g_scriptFileName,g_lineNumber,(int32_t)sizeof(g_volumeNames[j])-1);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -4913,7 +4900,7 @@ repeatcase:
{
initprintf("%s:%d: error: volume number exceeds maximum volume count.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4926,14 +4913,14 @@ repeatcase:
g_scriptPtr--;
j = *g_scriptPtr;
C_SkipSpace();
scriptSkipSpaces();
if (EDUKE32_PREDICT_FALSE((unsigned)j > NUMGAMEFUNCTIONS-1))
{
initprintf("%s:%d: error: function number exceeds number of game functions.\n",
g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4948,7 +4935,7 @@ repeatcase:
initprintf("%s:%d: warning: invalid character in function name.\n",
g_scriptFileName,g_lineNumber);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
if (EDUKE32_PREDICT_FALSE(i >= MAXGAMEFUNCLEN-1))
@ -4956,7 +4943,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating function name to %d characters.\n",
g_scriptFileName,g_lineNumber,MAXGAMEFUNCLEN);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -4981,7 +4968,7 @@ repeatcase:
initprintf("%s:%d: error: function number exceeds number of game functions.\n",
g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -4996,14 +4983,14 @@ repeatcase:
g_scriptPtr--;
j = *g_scriptPtr;
C_SkipSpace();
scriptSkipSpaces();
if (EDUKE32_PREDICT_FALSE((unsigned)j >= MAXSKILLS))
{
initprintf("%s:%d: error: skill number exceeds maximum skill count %d.\n",
g_scriptFileName,g_lineNumber, MAXSKILLS);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -5018,7 +5005,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating skill name to %d characters.\n",
g_scriptFileName,g_lineNumber,(int32_t)sizeof(g_skillNames[j])-1);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -5050,7 +5037,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating game name to %d characters.\n",
g_scriptFileName,g_lineNumber,(int32_t)sizeof(gamename)-1);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -5110,7 +5097,7 @@ repeatcase:
{
initprintf("%s:%d: error: gametype number exceeds maximum gametype count.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
g_gametypeCnt = j+1;
@ -5126,7 +5113,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating gametype name to %d characters.\n",
g_scriptFileName,g_lineNumber,(int32_t)sizeof(g_gametypeNames[j])-1);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -5147,14 +5134,14 @@ repeatcase:
{
initprintf("%s:%d: error: volume number exceeds maximum volume count.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
if (EDUKE32_PREDICT_FALSE((unsigned)k > MAXLEVELS-1))
{
initprintf("%s:%d: error: level number exceeds maximum number of levels per episode.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -5170,7 +5157,7 @@ repeatcase:
{
initprintf("%s:%d: error: level file name exceeds limit of %d characters.\n",g_scriptFileName,g_lineNumber,BMAX_PATH);
g_errorCnt++;
C_SkipSpace();
scriptSkipSpaces();
break;
}
}
@ -5192,7 +5179,7 @@ repeatcase:
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
textptr += 5;
C_SkipSpace();
scriptSkipSpaces();
// cheap hack, 0.99 doesn't have the 3D Realms time
if (*(textptr+2) == ':')
@ -5202,7 +5189,7 @@ repeatcase:
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
textptr += 5;
C_SkipSpace();
scriptSkipSpaces();
}
else if (g_scriptVersion == 10) g_scriptVersion = 9;
@ -5217,7 +5204,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating level name to %d characters.\n",
g_scriptFileName,g_lineNumber,32);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -5261,7 +5248,7 @@ repeatcase:
i = 0;
C_SkipSpace();
scriptSkipSpaces();
if (tw == CON_REDEFINEQUOTE)
{
@ -5289,7 +5276,7 @@ repeatcase:
{
initprintf("%s:%d: warning: truncating quote text to %d characters.\n",g_scriptFileName,g_lineNumber,MAXQUOTELEN-1);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}
@ -5326,7 +5313,7 @@ repeatcase:
{
initprintf("%s:%d: error: cheat undefinition attempts to undefine nonexistent cheat.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
@ -5342,12 +5329,12 @@ repeatcase:
{
initprintf("%s:%d: error: cheat redefinition attempts to redefine nonexistent cheat.\n",g_scriptFileName,g_lineNumber);
g_errorCnt++;
C_NextLine();
scriptSkipLine();
continue;
}
g_scriptPtr--;
i = 0;
C_SkipSpace();
scriptSkipSpaces();
while (*textptr != 0x0a && *textptr != 0x0d && *textptr != 0 && *textptr != ' ')
{
CheatStrings[k][i] = Btolower(*textptr);
@ -5357,7 +5344,7 @@ repeatcase:
initprintf("%s:%d: warning: truncating cheat string to %d characters.\n",
g_scriptFileName,g_lineNumber,(signed)sizeof(CheatStrings[k])-1);
g_warningCnt++;
C_NextLine();
scriptSkipLine();
break;
}
}

View file

@ -772,7 +772,7 @@ static FORCE_INLINE int __fastcall Gv_GetVar__(int &gameVar, int &spriteNum, int
}
returnValue = var.pValues[playerNum];
}
else switch (varFlags)
else switch (varFlags & GAMEVAR_PTR_MASK)
{
case GAMEVAR_INT32PTR: returnValue = *(int32_t *)var.global; break;
case GAMEVAR_INT16PTR: returnValue = *(int16_t *)var.global; break;
@ -821,7 +821,7 @@ static FORCE_INLINE void __fastcall Gv_SetVar__(int const &gameVar, int const &n
if (EDUKE32_PREDICT_FALSE((unsigned) playerNum > MAXPLAYERS-1)) goto badindex;
var.pValues[playerNum] = newValue;
}
else switch (varFlags)
else switch (varFlags & GAMEVAR_PTR_MASK)
{
case GAMEVAR_INT32PTR: *((int32_t *)var.global) = (int32_t)newValue; break;
case GAMEVAR_INT16PTR: *((int16_t *)var.global) = (int16_t)newValue; break;