pull/2/head
Jeff Weston 2019-09-11 11:44:47 -04:00
parent cd02273e2a
commit 5b2d493872
10 changed files with 55 additions and 32 deletions

View File

@ -1,5 +1,11 @@
NORM Version History
Version 1.2b8
=============
- Fixed bug introduced during "alignment" changes
in previous release.
- Fixed Protolib WIN32 build issue
Version 1.2b7
=============
- Changed normMessage.[h|cpp] to fix alignment issues

View File

@ -511,7 +511,6 @@ void NormInstance::Shutdown()
default:
break;
}
notify_pool.Append(previous_notification);
previous_notification = NULL;
}
@ -545,7 +544,6 @@ void NormInstance::Shutdown()
}
delete n;
}
notify_pool.Destroy();
} // end NormInstance::Shutdown()

View File

@ -161,9 +161,10 @@ NormApp::NormApp()
NormApp::~NormApp()
{
if (address) delete address;
if (rx_cache_path) delete rx_cache_path;
if (post_processor) delete post_processor;
if (address) delete[] address;
if (interface_name) delete[] interface_name;
if (rx_cache_path) delete[] rx_cache_path;
if (post_processor) delete[] post_processor;
}
// NOTE on message flushing mode:

View File

@ -88,14 +88,14 @@ bool NormEncoder::Init(int numParity, int vecSizeMax)
// Free memory allocated for encoder state (Encoder must be re-inited before use)
void NormEncoder::Destroy()
{
if(scratch)
if(NULL != scratch)
{
delete[] scratch;
scratch = NULL;
}
if (genPoly)
if (NULL != genPoly)
{
delete genPoly;
delete[] genPoly;
genPoly = NULL;
}
} // end NormEncoder::Destroy()
@ -432,7 +432,6 @@ int NormDecoder::Decode(char** dVec, int ndata, UINT16 erasureCount, UINT16* era
data++;
}
}
return erasureCount;
} // end NormDecoder::Decode()

View File

@ -1983,7 +1983,7 @@ void NormNodeTree::AttachNode(NormNode *node)
}
}
root = node; // root _was_ NULL
} // end NormNodeTree::AddNode()
} // end NormNodeTree::AttachNode()
void NormNodeTree::DetachNode(NormNode* node)

View File

@ -457,14 +457,9 @@ class NormNodeTree
NormNodeTree();
~NormNodeTree();
NormNode* FindNodeById(NormNodeId nodeId) const;
void DeleteNode(NormNode *theNode)
{
ASSERT(theNode);
DetachNode(theNode);
delete theNode;
}
void AttachNode(NormNode *theNode);
void DetachNode(NormNode *theNode);
NormNode* GetRoot() const {return root;}
void Destroy(); // delete all nodes in tree
private:
@ -506,7 +501,6 @@ class NormNodeList
void Destroy(); // delete all nodes in list
const NormNode* Head() {return head;}
// Members
private:
NormNode* head;

View File

@ -67,6 +67,7 @@ bool NormObject::Open(const NormObjectSize& objectSize,
// DATA or FILE objects, buffer size for STREAM objects
// In either case, we need our sliding bit masks to be of
// appropriate size.
ASSERT(!IsOpen());
if (server)
{
if (infoLen > 0)
@ -1950,7 +1951,7 @@ NormDataObject::~NormDataObject()
{
if (data_ptr)
{
delete data_ptr;
delete[] data_ptr;
data_ptr = NULL;
}
data_released = false;
@ -1964,6 +1965,12 @@ bool NormDataObject::Open(char* dataPtr,
const char* infoPtr,
UINT16 infoLen)
{
if (data_released && (NULL != data_ptr))
{
delete[] data_ptr;
data_ptr = NULL;
data_released = false;
}
if (server)
{
// We're receiving this data object
@ -3067,7 +3074,7 @@ void NormObjectTable::Destroy()
while((obj = Find(range_lo)))
{
Remove(obj);
delete obj;
delete obj; // (TBD - make this obj->Release() ???
}
delete []table;
table = (NormObject**)NULL;

View File

@ -53,13 +53,12 @@ bool NormSegmentPool::Init(unsigned int count, unsigned int size)
void NormSegmentPool::Destroy()
{
ASSERT(seg_count == seg_total);
char* ptr;
memcpy(&ptr, &seg_list, sizeof(char*));
char* ptr = seg_list;
while (ptr)
{
char* next;
memcpy(&next, ptr, sizeof(char*));
delete ptr;
delete[] ptr;
ptr = next;
}
seg_list = NULL;
@ -73,7 +72,7 @@ char* NormSegmentPool::Get()
char* ptr = seg_list;
if (ptr)
{
memcpy(&seg_list, ptr, sizeof(char));
memcpy(&seg_list, ptr, sizeof(char*));
seg_count--;
//#ifdef NORM_DEBUG
overrun_flag = false;

View File

@ -363,12 +363,22 @@ void NormSession::StopServer()
{
if (probe_timer.IsActive()) probe_timer.Deactivate();
encoder.Destroy();
acking_node_tree.Destroy();
cc_node_list.Destroy();
// Iterate tx_table and release objects
while (!tx_table.IsEmpty())
{
NormObject* obj = tx_table.Find(tx_table.RangeLo());
ASSERT(obj);
tx_table.Remove(obj);
obj->Release();
}
// Then destroy table
tx_table.Destroy();
block_pool.Destroy();
segment_pool.Destroy();
tx_repair_mask.Destroy();
tx_pending_mask.Destroy();
tx_table.Destroy();
is_server = false;
if (!IsClient()) Close();
} // end NormSession::StopServer()
@ -386,7 +396,17 @@ bool NormSession::StartClient(unsigned long bufferSize, const char* interfaceNam
void NormSession::StopClient()
{
server_tree.Destroy();
// Iterate server_tree and close/release server nodes
NormServerNode* serverNode =
static_cast<NormServerNode*>(server_tree.GetRoot());
while (serverNode)
{
server_tree.DetachNode(serverNode);
serverNode->Close();
serverNode->Release();
serverNode =
static_cast<NormServerNode*>(server_tree.GetRoot());
}
is_client = false;
if (!is_server) Close();
}
@ -639,7 +659,8 @@ void NormSession::ServerRemoveAckingNode(NormNodeId nodeId)
{
if (watermark_pending && theNode->AckReceived())
acks_collected--;
acking_node_tree.DeleteNode(theNode);
acking_node_tree.DetachNode(theNode);
delete theNode;
acking_node_count--;
}
} // end NormSession::RemoveAckingNode()
@ -982,8 +1003,6 @@ bool NormSession::QueueTxObject(NormObject* obj)
ASSERT(tx_pending_mask.Test(obj->GetId()));
next_tx_object_id++;
TouchServer();
//posted_tx_queue_empty = false;
//Serve();
return true;
} // end NormSession::QueueTxObject()

View File

@ -32,6 +32,6 @@
#ifndef _NORM_VERSION
#define _NORM_VERSION
#define VERSION "1.2b7"
#define VERSION "1.2b8"
#endif // _NORM_VERSION