[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdenetwork/kopete/protocols/msn
From:       Will Stephenson <wstephenson () kde ! org>
Date:       2008-09-26 8:10:10
Message-ID: 1222416610.564994.6727.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 864950 by wstephens:

Replace char * operations with QByteArray.  Fixes valgrind errors reported at \
https://bugzilla.novell.com:443/show_bug.cgi?id=360333

 M  +12 -37    msnsocket.cpp  


--- trunk/KDE/kdenetwork/kopete/protocols/msn/msnsocket.cpp #864949:864950
@@ -209,8 +209,8 @@
 
 	// incoming data, plus an extra char where we pretend a NUL is so the conversion
 	// to QCString doesn't go over the end of the allocated memory.
-	char *buffer = new char[ avail + 1 ];
-	int ret = m_socket->read( buffer, avail );
+	QByteArray buffer(avail, '\0');
+	int ret = m_socket->read( buffer.data(), avail );
 
 	if ( ret < 0 )
 	{
@@ -244,7 +244,7 @@
 			QByteArray bytes;
 
 			// Check if all data has arrived.
-			rawData = QString(QByteArray(buffer, avail + 1));
+			rawData = QString(buffer);
 			bool headers = (rawData.indexOf(QRegExp("HTTP/\\d\\.\\d (\\d+) ([^\r\n]+)")) != \
-1);  
 			if(headers)
@@ -263,9 +263,8 @@
 						{
 							// The packet contains the headers but does not contain the content data;
 							// buffer the data received and read again.
-							m_buffer.add(buffer, avail);
+							m_buffer.append(buffer);
 
-							delete[] buffer;
 							// Update how much data remains.
 							m_remaining = l;
 							return;
@@ -276,13 +275,12 @@
 			else
 			{
 				// Write the received data to the buffer.
-				m_buffer.add(buffer, avail);
+				m_buffer.append(buffer);
 
 				m_remaining -= avail;
 				if(m_remaining != 0)
 				{
 					// We have not received all the content data, read again.
-					delete[] buffer;
 					return;
 				}
 
@@ -293,7 +291,7 @@
 			if(bytes.size() == 0) 
 			{
 				// The response headers and the content came in one packet.
-				bytes = QByteArray( buffer, avail );
+				bytes = buffer;
 			}
 
 
@@ -301,7 +299,6 @@
 			WebResponse response(bytes);
 
 			if(response.getStatusCode() == 100) {
-			    delete[] buffer;
 				return;
 			}
 
@@ -336,7 +333,6 @@
 							kDebug(14140) << "Session closed.";
 							m_bCanPoll = false;
 							disconnect();
-						    delete [] buffer;
 							return;
 						}
 				}else
@@ -360,9 +356,9 @@
 					{
 						// Otherwise, if the content length is greater than zero, get the web response \
stream.  QDataStream *stream = response.getResponseStream();
-						buffer = new char[length];
+						buffer.fill('\0', length);
 						// Read the web response content.
-						stream->readRawData(buffer, length);
+						stream->readRawData(buffer.data(), length);
 						ret = length;
 					}else
 						error = true;
@@ -380,7 +376,6 @@
 				m_bCanPoll = false;
 				// Disconnect from the service.
 				disconnect();
-		        delete [] buffer;
 				return;
 			}
 		}
@@ -405,7 +400,7 @@
 			kDebug( 14141 ) << rawData;
 
 		// fill the buffer with the received data
-		m_buffer.add( buffer, ret );
+		m_buffer.append(buffer);
 
 		slotReadLine();
 
@@ -416,7 +411,6 @@
 	}
 
 	// Cleanup.
-	delete[] buffer;
 }
 
 void MSNSocket::slotReadLine()
@@ -944,19 +938,6 @@
 {
 }
 
-void MSNSocket::Buffer::add( char *str, unsigned int sz )
-{
-	char *b = new char[ size() + sz ];
-	for ( int f = 0; f < size(); f++ )
-		b[ f ] = data()[ f ];
-	for ( uint f = 0; f < sz; f++ )
-		b[ size() + f ] = str[ f ];
-
-	QByteArray *that = this;
-	*that = QByteArray( b, size() + sz );
-	delete[] b;
-}
-
 QByteArray MSNSocket::Buffer::take( int blockSize )
 {
 	if ( size() < blockSize )
@@ -965,17 +946,11 @@
 		return QByteArray();
 	}
 
-	QByteArray rep;
-	rep.reserve( blockSize );	
-	for( int i = 0; i < blockSize; i++ )
-		rep[ i ] = data()[ i ];
+	QByteArray rep = left(blockSize);
 
-	char *str = new char[ size() - blockSize ];
-	for ( int i = 0; i < size() - blockSize; i++ )
-		str[ i ] = data()[ blockSize + i ];
+	QByteArray newThis = right( size() - blockSize );
 	QByteArray *that = this;
-	*that = QByteArray( str, size() - blockSize );
-	delete[] str;
+	*that = newThis;
 
 	return rep;
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic