diff --git a/Config.h b/Config.h index 6bf3a321..47ee3852 100644 --- a/Config.h +++ b/Config.h @@ -75,9 +75,9 @@ protected: }; // 必须设定为1字节对齐,否则offsetof会得到错误的位置 -#pragma pack(push) // 保存对齐状态 +//#pragma pack(push) // 保存对齐状态 // 强制结构体紧凑分配空间 -#pragma pack(1) +//#pragma pack(1) /******************************** HotConfig ********************************/ @@ -101,7 +101,7 @@ public: }; -#pragma pack(pop) // 恢复对齐状态 +//#pragma pack(pop) // 恢复对齐状态 /* 配置子系统,链式保存管理多配置段。 diff --git a/String.cpp b/String.cpp index b769833e..3b7e7b21 100644 --- a/String.cpp +++ b/String.cpp @@ -146,13 +146,13 @@ bool String::CheckCapacity(uint size) if (_Arr && _Capacity >= size) return true; // 外部需要放下size个字符,那么需要size+1个字节空间 - int sz = _Capacity; + int sz = 0x40; while(sz <= size) sz <<= 1; auto p = new char[sz]; if(!p) return false; - if(_Length) + if(_Arr && _Length) //strcpy(p, _Arr); // 为了安全,按照字节拷贝 Buffer(p, sz).Copy(0, _Arr, _Length); @@ -162,7 +162,7 @@ bool String::CheckCapacity(uint size) if(_needFree && _Arr != Arr) delete _Arr; _Arr = p; - _Capacity = sz; + _Capacity = sz - 1; _needFree = true; return true; @@ -259,7 +259,7 @@ bool String::Concat(const char* cstr, uint length) if (!cstr) return false; if (length == 0) return true; if (!CheckCapacity(newlen)) return false; - + //strcpy(_Arr + _Length, cstr); Buffer(_Arr, _Capacity).Copy(_Length, cstr, length); _Length = newlen; diff --git a/TinyNet/TinyConfig.h b/TinyNet/TinyConfig.h index 07407471..4c1b47cd 100644 --- a/TinyNet/TinyConfig.h +++ b/TinyNet/TinyConfig.h @@ -6,9 +6,9 @@ #include "Config.h" // 必须设定为1字节对齐,否则offsetof会得到错误的位置 -#pragma pack(push) // 保存对齐状态 +//#pragma pack(push) // 保存对齐状态 // 强制结构体紧凑分配空间 -#pragma pack(1) +//#pragma pack(1) // 配置信息 class TinyConfig : public ConfigBase @@ -45,6 +45,6 @@ private: byte TagEnd; // 数据区结束标识符 }; -#pragma pack(pop) // 恢复对齐状态 +//#pragma pack(pop) // 恢复对齐状态 #endif diff --git a/TokenNet/TokenConfig.cpp b/TokenNet/TokenConfig.cpp index 4df653de..7aeb0d0a 100644 --- a/TokenNet/TokenConfig.cpp +++ b/TokenNet/TokenConfig.cpp @@ -57,35 +57,21 @@ TokenConfig* TokenConfig::Create(const char* vendor, byte protocol, ushort sport { TokenConfig::Current = &tc; tc.Init(); - - //strcpy(tc.Vendor, vendor); tc.Load(); - bool rs = tc.New; - if(tc.Vendor.Length() == 0) + bool rs = tc.New; + if(!tc.Vendor) { - /*// len 表示字符串真实长度,不包括结束零 - auto len = strlen(vendor); - if(len > ArrayLength(tc.Vendor)) len = ArrayLength(tc.Vendor) - 1; - strncpy(tc.Vendor, vendor, len); - tc.Vendor[len] = '\0';*/ tc.Vendor = vendor; rs = false; } - if(tc.Server.Length() == 0) + if(!tc.Server) { - /*// len 表示字符串真实长度,不包括结束零 - auto len = strlen(tc.Vendor); - if(len > ArrayLength(tc.Server)) len = ArrayLength(tc.Server) - 1; - strncpy(tc.Server, tc.Vendor, ArrayLength(tc.Server)); - tc.Server[len] = '\0';*/ tc.Server = tc.Vendor; - - //tc.ServerIP = svr.Value; tc.ServerPort = sport; - tc.Port = port; + tc.Port = port; rs = false; } diff --git a/TokenNet/TokenConfig.h b/TokenNet/TokenConfig.h index 80a123e9..d3870a70 100644 --- a/TokenNet/TokenConfig.h +++ b/TokenNet/TokenConfig.h @@ -7,9 +7,9 @@ #include "Net\Net.h" // 必须设定为1字节对齐,否则offsetof会得到错误的位置 -#pragma pack(push) // 保存对齐状态 +//#pragma pack(push) // 保存对齐状态 // 强制结构体紧凑分配空间 -#pragma pack(1) +//#pragma pack(1) // 配置信息 class TokenConfig : public ConfigBase @@ -30,7 +30,7 @@ public: char _VisitToken[16]; //访问服务器令牌 char _Server[32]; // 服务器域名。出厂为空,从厂商服务器覆盖,恢复出厂设置时清空 char _Vendor[32]; // 厂商服务器域名。原始厂商服务器地址 - + byte TagEnd; // 数据区结束标识符 TokenConfig(); @@ -42,13 +42,13 @@ public: String VisitToken; String Server; String Vendor; - + static TokenConfig* Current; static TokenConfig* Create(const char* vendor, byte protocol, ushort sport, ushort port); private: }; -#pragma pack(pop) // 恢复对齐状态 +//#pragma pack(pop) // 恢复对齐状态 #endif