BugFix: Data pointer are now stored correctly in the map of ECC Controller
This commit is contained in:
@@ -14,7 +14,7 @@ using namespace tlm;
|
||||
struct ControllerECC: sc_module
|
||||
{
|
||||
private:
|
||||
map<int, unsigned char*> m_mDataPointer;
|
||||
map<unsigned char*, unsigned char*> m_mDataPointer;
|
||||
|
||||
public:
|
||||
tlm_utils::multi_passthrough_target_socket<ControllerECC> t_socket;
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
trans.set_data_length(nBlocks*9);
|
||||
|
||||
// store old data
|
||||
m_mDataPointer[id] = trans.get_data_ptr();
|
||||
m_mDataPointer[pDataECC] = trans.get_data_ptr();
|
||||
|
||||
// Set new data
|
||||
trans.set_data_ptr(pDataECC);
|
||||
@@ -89,12 +89,15 @@ public:
|
||||
// Get data length
|
||||
unsigned nDataLength = trans.get_data_length();
|
||||
|
||||
// store old data
|
||||
m_mDataPointer[id] = trans.get_data_ptr();
|
||||
// Create new pointer
|
||||
nDataLength += nDataLength>>3;
|
||||
unsigned char* new_ptr = new unsigned char [nDataLength];
|
||||
|
||||
// Set new data
|
||||
nDataLength += nDataLength>>3;
|
||||
trans.set_data_ptr(new unsigned char [nDataLength]);
|
||||
// store old data ptr
|
||||
m_mDataPointer[new_ptr] = trans.get_data_ptr();
|
||||
|
||||
// Set new data
|
||||
trans.set_data_ptr(new_ptr);
|
||||
|
||||
// Change transport data length
|
||||
trans.set_data_length(nDataLength);
|
||||
@@ -189,7 +192,7 @@ public:
|
||||
trans.set_data_length(nBlocks<<3);
|
||||
|
||||
// load data pointer
|
||||
auto it = m_mDataPointer.find(id);
|
||||
auto it = m_mDataPointer.find(trans.get_data_ptr());
|
||||
assert(it != m_mDataPointer.end());
|
||||
|
||||
unsigned char* pDataECC = it->second;
|
||||
@@ -217,7 +220,7 @@ public:
|
||||
unsigned nDataLength = trans.get_data_length();
|
||||
|
||||
// load data pointer
|
||||
auto it = m_mDataPointer.find(id);
|
||||
auto it = m_mDataPointer.find(trans.get_data_ptr());
|
||||
assert(it != m_mDataPointer.end());
|
||||
|
||||
trans.set_data_ptr(it->second);
|
||||
|
||||
Reference in New Issue
Block a user