summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-15 09:31:52 (UTC)
committer zautrix <zautrix>2005-01-15 09:31:52 (UTC)
commitf9f60d23806530a5bccae372e5eeebee6d528f20 (patch) (side-by-side diff)
treecaa83ca3e29a14a3423a6f4a7f22119148eaef04
parenta423c235d0cbc39292102042ed8f4a953e0e37f9 (diff)
downloadkdepimpi-f9f60d23806530a5bccae372e5eeebee6d528f20.zip
kdepimpi-f9f60d23806530a5bccae372e5eeebee6d528f20.tar.gz
kdepimpi-f9f60d23806530a5bccae372e5eeebee6d528f20.tar.bz2
crash fix
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/vcard/VCardv.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/kabc/vcard/VCardv.cpp b/kabc/vcard/VCardv.cpp
index 49bfe43..1166aac 100644
--- a/kabc/vcard/VCardv.cpp
+++ b/kabc/vcard/VCardv.cpp
@@ -28,193 +28,193 @@
#include <qvaluelist.h>
#include <VCardEntity.h>
#include <VCardVCard.h>
#include <VCardContentLine.h>
#include <VCardRToken.h>
#include <VCardDefines.h>
using namespace VCARD;
VCard::VCard()
: Entity()
{
contentLineList_.setAutoDelete( TRUE );
}
VCard::VCard(const VCard & x)
: Entity(x),
group_(x.group_)
{
contentLineList_.setAutoDelete( TRUE );
QPtrListIterator<ContentLine> it(x.contentLineList_);
for (; it.current(); ++it) {
ContentLine * c = new ContentLine(*it.current());
contentLineList_.append(c);
}
}
VCard::VCard(const QCString & s)
: Entity(s)
{
contentLineList_.setAutoDelete( TRUE );
}
VCard &
VCard::operator = (VCard & x)
{
if (*this == x) return *this;
group_ = x.group();
QPtrListIterator<ContentLine> it(x.contentLineList_);
for (; it.current(); ++it) {
ContentLine * c = new ContentLine(*it.current());
contentLineList_.append(c);
}
Entity::operator = (x);
return *this;
}
VCard &
VCard::operator = (const QCString & s)
{
Entity::operator = (s);
return *this;
}
bool
VCard::operator == (VCard & x)
{
x.parse();
return false;
}
VCard::~VCard()
{
}
void
VCard::_parse()
{
QStringList l;
QStrList sl;
RTokenise(strRep_, "\r\n", sl);
if (sl.count() < 3) { // Invalid VCARD !
//qDebug("invalid vcard ");
return;
}
l = QStringList::fromStrList( sl );
// Get the first line
QString beginLine = l[0].stripWhiteSpace();
// Remove extra blank lines
while (l.last().isEmpty())
l.remove(l.last());
// Now we know this is the last line
QString endLine = l.last();
// Trash the first and last lines as we have seen them.
- l.remove(l.first());
+ l.remove(l.begin());
l.remove(l.last());
///////////////////////////////////////////////////////////////
// FIRST LINE
int split = beginLine.find(':');
if (split == -1) { // invalid, no BEGIN
vDebug("No split");
return;
}
QString firstPart(beginLine.left(split));
QString valuePart(beginLine.mid(split + 1));
split = firstPart.find('.');
if (split != -1) {
group_ = firstPart.left(split);
firstPart = firstPart.right(firstPart.length() - split - 1);
}
if (firstPart.left(5) != "BEGIN" ) { // No BEGIN !
qDebug("no BEGIN in vcard ");
return;
}
if (valuePart.left(5) != "VCARD") { // Not a vcard !
qDebug("not a VCARD ");
return;
}
///////////////////////////////////////////////////////////////
// CONTENT LINES
//
vDebug("Content lines");
// Handle folded lines.
QStringList refolded;
QStringList::Iterator it = l.begin();
QString cur;
for (; it != l.end(); ++it) {
cur = (*it);
++it;
while ( it!= l.end() && (*it).at(0) == ' ' && (*it).length()!= 1) {
cur += (*it) ;
++it;
}
--it;
refolded.append(cur);
}
QStringList::Iterator it2 = refolded.begin();
for (; it2 != refolded.end(); ++it2) {
ContentLine * cl = new ContentLine(QCString((*it2).latin1()));
cl->parse();
if (cl->value() == 0)
{
qDebug("Content line could not be parsed. Discarded: %s", (*it2).latin1());
delete cl;
}
else
contentLineList_.append(cl);
}
///////////////////////////////////////////////////////////////
// LAST LINE
// LR: sorry, but the remaining code in this method makes no sense
#if 0
split = endLine.find(':');
if (split == -1) // invalid, no END
return;
firstPart = endLine.left(split);
valuePart = endLine.right(firstPart.length() - split - 1);
split = firstPart.find('.');
if (split != -1) {
group_ = firstPart.left(split);
firstPart = firstPart.right(firstPart.length() - split - 1);
}
if (qstricmp(firstPart, "END") != 0) // No END !
return;
if (qstricmp(valuePart, "VCARD") != 0) // Not a vcard !
return;