Code: Select all
if (i < 0) -1;
Code: Select all
if (i < 0)
return -1;
Moderator: Zyx
Code: Select all
if (i < 0) -1;
Code: Select all
if (i < 0)
return -1;
Code: Select all
enlarging DB 3: from 10318 to 10418 entries (10 per entry)
Breakpoint 1, DATABASES::Enlarge (this=0x8179de0, dbNum=3) at data.cpp:859
859 MALLOC064);
(gdb) bt
#0 DATABASES::Enlarge (this=0x8179de0, dbNum=3) at data.cpp:859
#1 0x080ebe8c in DATABASES::FindEmptyDBEntry (this=0x8179de0, dbType=dbACTUATOR, important=true) at data.cpp:973
#2 0x0808191a in FindEmptyDB3Entry (important=59) at CSBCode.cpp:4926
#3 0x080ad49c in CopyItem (origRN=...) at DSA.cpp:1771
#4 0x080ae71d in EX_ADD (exPkt=<value optimized out>, cmdOffset=<value optimized out>) at DSA.cpp:2026
#5 EX_AMPERSAND (exPkt=<value optimized out>, cmdOffset=<value optimized out>) at DSA.cpp:2520
#6 0x080b4f27 in Execute (RNmaster=<value optimized out>, RNslave=<value optimized out>, pDBMaster=<value optimized out>, pMaster=0x82a2ba8,
pSlave=0x82a2ba8, curState=1, msgType=1, locrMaster=..., locrSlave=..., subroutineLevel=1, filter=false) at DSA.cpp:5136
#7 0x080b62e2 in EX_GOSUB (exPkt=...) at DSA.cpp:804
#8 0x080b5e52 in Execute (RNmaster=<value optimized out>, RNslave=<value optimized out>, pDBMaster=<value optimized out>, pMaster=0x82a2ba8, pSlave=0x82a2ba8, curState=1, msgType=0, locrMaster=..., locrSlave=..., subroutineLevel=0, filter=false) at DSA.cpp:5242
#9 0x080b6785 in ProcessDSATimer6 (objSlave=..., pTimer=0xbfffebb0, locrSlave=..., filter=<value optimized out>, dsaVars=0xbfffe97a) at DSA.cpp:5437
#10 0x080e085c in ProcessTT_STONEROOM (pTimer=0xbfffebb0, index=197) at Timer.cpp:2200
#11 0x0808646c in ProcessTimers () at CSBCode.cpp:6412
#12 0x0808932e in _MainLoop () at CSBCode.cpp:617
Code: Select all
==3396== Thread 1:
==3396== Invalid read of size 2
==3396== at 0x80E7306: DB3::ParameterA() (data.cpp:1339)
==3396== by 0x80AC82C: GetTarget(TARGETTYPE, EXECUTIONPACKET&, bool) (DSA.cpp:597)
==3396== by 0x80ACE68: EX_MESSAGE(EXECUTIONPACKET&, bool, char) (DSA.cpp:667)
==3396== by 0x80B5DCF: Execute(RN, RN, DB3*, DSA*, DSA*, int, int, LOCATIONREL, LOCATIONREL, int, bool) (DSA.cpp:5221)
==3396== by 0x80B62E1: EX_GOSUB(EXECUTIONPACKET&) (DSA.cpp:804)
==3396== by 0x80B5E51: Execute(RN, RN, DB3*, DSA*, DSA*, int, int, LOCATIONREL, LOCATIONREL, int, bool) (DSA.cpp:5242)
==3396== by 0x80B6784: ProcessDSATimer6(RN, TIMER const*, LOCATIONREL, bool, DSAVARS*) (DSA.cpp:5437)
==3396== by 0x80E085B: ProcessTT_STONEROOM(TIMER*, unsigned int) (Timer.cpp:2200)
==3396== Address 0x6456c28 is 100,128 bytes inside a block of size 103,180 free'd
==3396== at 0x4025A7D: realloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==3396== by 0x808A314: UI_realloc(void*, int, unsigned int) (CSBUI.cpp:2270)
==3396== by 0x80E97F1: DATABASES::Enlarge(int) (data.cpp:857)
==3396== by 0x80EBDFB: DATABASES::FindEmptyDBEntry(DBTYPE, bool) (data.cpp:971)
==3396== by 0x8081919: FindEmptyDB3Entry(bool) (CSBCode.cpp:4926)
==3396== by 0x80AD49B: CopyItem(RN) (DSA.cpp:1771)
==3396== by 0x80AE71C: EX_AMPERSAND(EXECUTIONPACKET&, int) (DSA.cpp:2026)
==3396== by 0x80B4F26: Execute(RN, RN, DB3*, DSA*, DSA*, int, int, LOCATIONREL, LOCATIONREL, int, bool) (DSA.cpp:5136)
Code: Select all
diff --git a/DSA.cpp b/DSA.cpp
index e751468..ca4fbfd 100644
--- a/DSA.cpp
+++ b/DSA.cpp
@@ -245,7 +245,6 @@ struct EXECUTIONPACKET
i32 m_nextState; //The prefix '5' in "5MS"
ui16 *m_PC; //Updated
i32 m_wordsRemaining; //Updated
- DB3 *m_pDBMaster; //Unchanged
DSA *m_pMaster; //Unchanged
i32 m_curState; //Unchanged
i32 m_column; //Unchanged
@@ -427,7 +426,6 @@ void STACK::minusRoll(ui32 i)
static i32 Execute(RN RNmaster,
RN RNslave,
- DB3 *pDBMaster,
DSA *pMaster,
DSA *pSlave,
i32 curState,
@@ -594,10 +592,10 @@ LOCATIONREL GetTarget(TARGETTYPE targetType,
switch (targetType)
{
case TARGET_A:
- target = exPkt.m_pDBMaster->ParameterA();
+ target = GetRecordAddressDB3(exPkt.m_RNmaster)->ParameterA();^M
break;
case TARGET_B:
- target = exPkt.m_pDBMaster->ParameterB();
+ target = GetRecordAddressDB3(exPkt.m_RNmaster)->ParameterB();^M
break;
case TARGET_ABS:
target = *(exPkt.m_PC++);
@@ -653,8 +651,8 @@ static void EX_MESSAGE(EXECUTIONPACKET& exPkt, bool thirtyTwo, char MorD)
switch (cmd.Delay())
{
case 0: delay = 0; break;
- case 1: delay = exPkt.m_pDBMaster->ParameterA(); break;
- case 2: delay = exPkt.m_pDBMaster->ParameterB(); break;
+ case 1: delay = GetRecordAddressDB3(exPkt.m_RNmaster)->ParameterA(); break;^M
+ case 2: delay = GetRecordAddressDB3(exPkt.m_RNmaster)->ParameterB(); break;^M
case 3: delay = *(exPkt.m_PC++); exPkt.m_wordsRemaining--; break;
};
// locr = GetTarget(cmd.Target(),
@@ -793,7 +791,6 @@ static void EX_GOSUB(EXECUTIONPACKET& exPkt)
};
Execute(exPkt.m_RNmaster,
exPkt.m_RNslave,
- exPkt.m_pDBMaster,
exPkt.m_pMaster,
exPkt.m_pMaster,
row,
@@ -942,7 +939,6 @@ static void EX_QUESTION(EXECUTIONPACKET& exPkt)
};
Execute(exPkt.m_RNmaster,
exPkt.m_RNslave,
- exPkt.m_pDBMaster,
exPkt.m_pMaster,
exPkt.m_pMaster,
addr,
@@ -4748,7 +4744,6 @@ static void EX_AMPERSAND(EXECUTIONPACKET& exPkt, int cmdOffset)
};
Execute(exPkt.m_RNmaster,
exPkt.m_RNslave,
- exPkt.m_pDBMaster,
exPkt.m_pMaster,
exPkt.m_pMaster,
state,
@@ -5045,7 +5040,6 @@ public:
static i32 Execute(RN RNmaster,
RN RNslave,
- DB3 *pDBMaster,
DSA *pMaster,
DSA *pSlave,
i32 curState,
@@ -5066,7 +5060,6 @@ static i32 Execute(RN RNmaster,
exPkt.m_subroutineLevel = subroutineLevel;
exPkt.m_RNmaster = RNmaster;
exPkt.m_RNslave = RNslave;
- exPkt.m_pDBMaster = pDBMaster;
exPkt.m_pMaster = pMaster;
exPkt.m_curState = curState;
exPkt.m_column = msgType;
@@ -5426,7 +5419,6 @@ bool ProcessDSATimer6(RN objSlave,
startingOperationCount = operationCount;
curState = Execute(objMaster,
objSlave,
- pDBMaster,
pMaster,
pSlave,
curState,
@@ -5436,7 +5428,6 @@ bool ProcessDSATimer6(RN objSlave,
0,
filter);
pDBSlave = GetRecordAddressDB3(objSlave);
- pDBMaster = GetRecordAddressDB3(objMaster);
#ifdef _DEBUG
instrumentation.AddToDSACount(absDSAindex, operationCount-startingOperationCount);
#endif
@@ -5457,7 +5448,7 @@ bool ProcessDSATimer6(RN objSlave,
};
};
if (pdsaDbank->forceState >= 0) curState = pdsaDbank->forceState;
- PutState(pDBMaster, pMaster, curState);
+ PutState(GetRecordAddressDB3(objMaster), pMaster, curState);
if (!excessiveWarning)
{
if (operationCount > 50000)
Code: Select all
00deca timer Process 18f 03 DLY=0000 66 00 0d 17 02 01 59f9c191
00deca timer create 153 03 DLY=0000 65 1a 0c 17 03 00 840f4c88
00deca timer create 18f 03 DLY=0001 66 00 0d 17 02 01 840f4c88
00deca timer create 1c6 03 DLY=0000 65 1b 0d 17 02 00 840f4c88
DSA Decoration AB State 13 MSG 7 [458]
00deca timer create 1d7 03 DLY=0000 65 1c 0c 17 03 00 6f72a3f3
00deca timer create 1f9 03 DLY=0001 66 00 0d 17 02 01 6f72a3f3
00deca timer create 23b 03 DLY=0000 65 1d 0d 17 02 00 6f72a3f3
DSA Decoration AB State 13 MSG 7 [458]