@@ -46,8 +46,9 @@ WebSocketFrame::getDataLength() {
4646
4747void
4848WebSocketFrame::setData (const char * data, unsigned int len) {
49- mData = data ;
49+ mData = ( char *) malloc (len) ;
5050 mDataLength = len;
51+ memcpy ((void *) mData , data, len);
5152}
5253
5354string
@@ -153,12 +154,9 @@ WebSocketParser::getNextFrame() {
153154 char * pos = (char *) memmem (mData , mLength , " \r\n\r\n " , 4 );
154155
155156 if (pos) {
156- char * data = (char *) malloc (pos - mData );
157- memcpy (data, mData , pos - mData );
158-
159157 WebSocketFrame* frame = new WebSocketFrame (0 , UNKNOWN);
160158 frame->setSubject (" HEADER" );
161- frame->setData (data , pos - mData );
159+ frame->setData (mData , pos - mData );
162160
163161 unsigned int len = pos - mData + 4 ;
164162
@@ -214,6 +212,7 @@ WebSocketParser::getNextFrame() {
214212 memcpy (payload, mData + payloadHeaderLength, payloadLength);
215213 frame->setData (payload, payloadLength);
216214 mLength -= payloadHeaderLength + payloadLength;
215+ free (payload);
217216
218217 if (mLength > 0 ) {
219218 memmove (mData , mData + payloadHeaderLength + payloadLength, mLength );
0 commit comments