[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