Pārlūkot izejas kodu

Z991239-527 #comment fix: 优化 Blob 结构体

gifur 5 gadi atpakaļ
vecāks
revīzija
4113e226f6
4 mainītis faili ar 11 papildinājumiem un 10 dzēšanām
  1. 6 6
      Common/Blob.h
  2. 2 1
      addin/cfg/shell.ini.in
  3. 1 1
      spbase/SpHelper.cpp
  4. 2 2
      spbase/test/SpCommTest.cpp

+ 6 - 6
Common/Blob.h

@@ -7,7 +7,7 @@
 
 struct CBlob
 {
-	void *m_pData;
+	char *m_pData;
 	int m_iLength;
 	bool m_bManaged;
 	CBlob() : m_bManaged(false), m_pData(NULL), m_iLength(0) {}
@@ -29,7 +29,7 @@ struct CBlob
 	void Clear() 
 	{ 
 		if (m_bManaged) {
-			delete m_pData;
+			delete[] m_pData;
 			m_bManaged = false;
 		}
 		m_iLength = 0;
@@ -53,7 +53,7 @@ struct CBlob
 
 	void Alloc(int len) {
 		if (m_bManaged) {
-			delete m_pData;
+			delete[] m_pData;
 		} else {
 			m_bManaged = true;
 		}
@@ -66,7 +66,7 @@ struct CBlob
 	{
 		Clear();
 
-		m_pData = pData;
+		m_pData = (char*)pData;
 		m_iLength = nLen;
 		m_bManaged = true;
 	}
@@ -95,7 +95,7 @@ struct CBlob
 			memcpy(pNewBuf, m_pData, m_iLength);
 
 		if (m_bManaged)
-			delete m_pData;
+			delete[] m_pData;
 
 		m_bManaged = true;
 		m_pData = pNewBuf;
@@ -107,7 +107,7 @@ struct CBlob
 	{
 		Clear();
 
-		m_pData = pData;
+		m_pData = (char*)pData;
 		m_iLength = nLen;
 		m_bManaged = false;
 	}

+ 2 - 1
addin/cfg/shell.ini.in

@@ -109,9 +109,10 @@ HighVoltageFour=0,@LIB_PREFIX@mod_highVoltageFour@LIB_SUFFIX@,0xF0F
 HighVoltageFifth=0,@LIB_PREFIX@mod_highVoltageFifth@LIB_SUFFIX@,0xF10
 
 [Startup]
-Number=2
+Number=3
 1=HelloService
 2=HelloClient
+3=PinPad
 
 [Test]
 Number=6

+ 1 - 1
spbase/SpHelper.cpp

@@ -163,7 +163,7 @@ inline void ReadT(iobuffer_t *iobuf, CBlob &t)
 	if (t.m_iLength) {
 		void *p = new char[t.m_iLength];
 		iobuffer_read(iobuf, IOBUF_T_BUF, p, &t.m_iLength);
-		t.m_pData = p;
+		t.m_pData = (char*)p;
 		t.m_bManaged = true;
 	}
 }

+ 2 - 2
spbase/test/SpCommTest.cpp

@@ -181,7 +181,7 @@ TEST(CommonTest, CBlobTest)
 	ASSERT_TRUE(blob.m_bManaged == false);
 
 	blob.Attach(t, sizeof(uint64_t));
-	ASSERT_TRUE(blob.m_pData == t);
+	ASSERT_TRUE(blob.m_pData == (char*)t);
 	ASSERT_TRUE(blob.m_iLength == sizeof(uint64_t));
 	ASSERT_TRUE(blob.m_bManaged);
 
@@ -208,7 +208,7 @@ TEST(CommonTest, CBlobTest)
 
 	//convey blob to blob2
 	blob.AssignAndClear(blob2);
-	ASSERT_TRUE(blob2.m_pData == t);
+	ASSERT_TRUE(blob2.m_pData == (char*)t);
 	ASSERT_TRUE(blob2.m_iLength == sizeof(uint64_t));
 	ASSERT_TRUE(blob2.m_bManaged);