@@ -72,8 +72,8 @@ char* NetworkPacket::getString(u32 from_offset)
72
72
73
73
void NetworkPacket::putRawString (const char * src, u32 len)
74
74
{
75
- if (m_read_offset + len * sizeof ( char ) >= m_datasize) {
76
- m_datasize += len * sizeof ( char ) ;
75
+ if (m_read_offset + len > m_datasize) {
76
+ m_datasize = m_read_offset + len ;
77
77
m_data.resize (m_datasize);
78
78
}
79
79
@@ -95,7 +95,7 @@ NetworkPacket& NetworkPacket::operator>>(std::string& dst)
95
95
dst.reserve (strLen);
96
96
dst.append ((char *)&m_data[m_read_offset], strLen);
97
97
98
- m_read_offset += strLen * sizeof ( char ) ;
98
+ m_read_offset += strLen;
99
99
return *this ;
100
100
}
101
101
@@ -108,13 +108,7 @@ NetworkPacket& NetworkPacket::operator<<(std::string src)
108
108
109
109
*this << msgsize;
110
110
111
- if (m_read_offset + msgsize * sizeof (char ) >= m_datasize) {
112
- m_datasize += msgsize * sizeof (char );
113
- m_data.resize (m_datasize);
114
- }
115
-
116
- memcpy (&m_data[m_read_offset], src.c_str (), msgsize);
117
- m_read_offset += msgsize;
111
+ putRawString (src.c_str (), (u32)msgsize);
118
112
119
113
return *this ;
120
114
}
@@ -128,13 +122,7 @@ void NetworkPacket::putLongString(std::string src)
128
122
129
123
*this << msgsize;
130
124
131
- if (m_read_offset + msgsize * sizeof (char ) >= m_datasize) {
132
- m_datasize += msgsize * sizeof (char );
133
- m_data.resize (m_datasize);
134
- }
135
-
136
- memcpy (&m_data[m_read_offset], src.c_str (), msgsize);
137
- m_read_offset += msgsize;
125
+ putRawString (src.c_str (), msgsize);
138
126
}
139
127
140
128
NetworkPacket& NetworkPacket::operator >>(std::wstring& dst)
@@ -189,7 +177,7 @@ std::string NetworkPacket::readLongString()
189
177
dst.reserve (strLen);
190
178
dst.append ((char *)&m_data[m_read_offset], strLen);
191
179
192
- m_read_offset += strLen* sizeof ( char ) ;
180
+ m_read_offset += strLen;
193
181
194
182
return dst;
195
183
}
2 commit comments
nerzhul commentedon May 5, 2015
does this commits have been tested in all situations ?
est31 commentedon May 5, 2015
I haven't given this very thorough testing, but the new code looks much better than the old one. I have tested it however.