Package: kdelibs Severity: normal Tags: patch When building 'kdelibs' on amd64 with gcc-4.0, I get the following error:
../../../kdecore/network/ksocketaddress.cpp: In member function 'void KNetwork::KSocketAddressData::dup(const sockaddr*, Q_UINT16, bool)': ../../../kdecore/network/ksocketaddress.cpp:350: error: cast from 'Q_UINT32*' to 'unsigned int' loses precision ../../../kdecore/network/ksocketaddress.cpp: In member function 'bool KNetwork::KSocketAddress::operator==(const KNetwork::KSocketAddress&) const': ../../../kdecore/network/ksocketaddress.cpp:519: error: cast from 'Q_UINT32*' to 'unsigned int' loses precision ../../../kdecore/network/ksocketaddress.cpp:520: error: cast from 'Q_UINT32*' to 'unsigned int' loses precision ../../../kdecore/network/ksocketaddress.cpp:526: error: cast from 'Q_UINT32*' to 'unsigned int' loses precision ../../../kdecore/network/ksocketbuffer.cpp: In member function 'virtual Q_LONG KNetwork::Internal::KSocketBuffer::consumeBuffer(char*, Q_LONG, bool)': ../../../kdecore/network/ksocketbuffer.cpp:186: warning: comparison between signed and unsigned integer expressions ../../../kdecore/network/ksocketbuffer.cpp: In member function 'virtual Q_LONG KNetwork::Internal::KSocketBuffer::sendTo(KNetwork::KActiveSocketBase*, Q_LONG)': ../../../kdecore/network/ksocketbuffer.cpp:252: warning: comparison between signed and unsigned integer expressions ../../../kdecore/network/ksocketbuffer.cpp:266: warning: comparison between signed and unsigned integer expressions make[4]: *** [libkdecorenetwork_la.all_cpp.lo] Error 1 make[4]: Leaving directory `/kdelibs-3.3.1/obj-x86_64-linux/kdecore/network' With the attached patch 'kdelibs' can be compiled on amd64 using gcc-4.0. Regards Andreas Jochens diff -urN ../tmp-orig/kdelibs-3.3.1/kdecore/kallocator.cpp ./kdecore/kallocator.cpp --- ../tmp-orig/kdelibs-3.3.1/kdecore/kallocator.cpp 2002-12-16 13:59:42.000000000 +0100 +++ ./kdecore/kallocator.cpp 2005-01-05 22:12:37.000000000 +0100 @@ -82,10 +82,10 @@ void KZoneAllocator::insertHash(MemBlock *b) { - unsigned int adr = ((unsigned int)b->begin) & (~(blockSize - 1)); - unsigned int end = ((unsigned int)b->begin) + blockSize; + unsigned long adr = ((unsigned long)b->begin) & (~(blockSize - 1)); + unsigned long end = ((unsigned long)b->begin) + blockSize; while (adr < end) { - unsigned int key = adr >> log2; + unsigned long key = adr >> log2; key = key & (hashSize - 1); if (!hashList[key]) hashList[key] = new QValueList<MemBlock *>; @@ -140,10 +140,10 @@ /* Update also the hashlists if we aren't going to reconstruct them soon. */ if (hashList && !hashDirty) { - unsigned int adr = ((unsigned int)b->begin) & (~(blockSize - 1)); - unsigned int end = ((unsigned int)b->begin) + blockSize; + unsigned long adr = ((unsigned long)b->begin) & (~(blockSize - 1)); + unsigned long end = ((unsigned long)b->begin) + blockSize; while (adr < end) { - unsigned int key = adr >> log2; + unsigned long key = adr >> log2; key = key & (hashSize - 1); if (hashList[key]) { QValueList<MemBlock *> *list = hashList[key]; @@ -199,7 +199,7 @@ if (hashDirty) initHash(); - unsigned int key = (((unsigned int)ptr) >> log2) & (hashSize - 1); + unsigned long key = (((unsigned long)ptr) >> log2) & (hashSize - 1); QValueList<MemBlock *> *list = hashList[key]; if (!list) { /* Can happen with certain usage pattern of intermixed free_since() diff -urN ../tmp-orig/kdelibs-3.3.1/kdecore/network/ksocketaddress.cpp ./kdecore/network/ksocketaddress.cpp --- ../tmp-orig/kdelibs-3.3.1/kdecore/network/ksocketaddress.cpp 2004-08-01 04:36:49.000000000 +0200 +++ ./kdecore/network/ksocketaddress.cpp 2005-01-05 22:08:59.000000000 +0100 @@ -226,7 +226,7 @@ // useful definitions #define MIN_SOCKADDR_LEN sizeof(Q_UINT16) #define SOCKADDR_IN_LEN sizeof(sockaddr_in) -#define MIN_SOCKADDR_IN6_LEN ((unsigned) &(((our_sockaddr_in6*)0)->sin6_scope_id)) +#define MIN_SOCKADDR_IN6_LEN ((unsigned long) &(((our_sockaddr_in6*)0)->sin6_scope_id)) #define SOCKADDR_IN6_LEN sizeof(our_sockaddr_in6) #define MIN_SOCKADDR_UN_LEN (sizeof(Q_UINT16) + sizeof(char)) diff -urN ../tmp-orig/kdelibs-3.3.1/khtml/css/parser.cpp ./khtml/css/parser.cpp --- ../tmp-orig/kdelibs-3.3.1/khtml/css/parser.cpp 2004-07-26 10:59:25.000000000 +0200 +++ ./khtml/css/parser.cpp 2005-01-05 22:48:33.000000000 +0100 @@ -2128,7 +2128,7 @@ { yyval.selector = new CSSSelector(); yyval.selector->attr = yyvsp[-5].attribute; - yyval.selector->match = (CSSSelector::Match)yyvsp[-4].val; + yyval.selector->match = (CSSSelector::Match)(long)yyvsp[-4].val; yyval.selector->value = domString(yyvsp[-2].string); ;} break; diff -urN ../tmp-orig/kdelibs-3.3.1/khtml/khtml_caret.cpp ./khtml/khtml_caret.cpp --- ../tmp-orig/kdelibs-3.3.1/khtml/khtml_caret.cpp 2004-09-07 14:31:35.000000000 +0200 +++ ./khtml/khtml_caret.cpp 2005-01-05 22:56:41.000000000 +0100 @@ -2102,7 +2102,7 @@ int i; for (i = 0; i < n; i++) { RenderTableCell *cell = row->row->at(i); - if (!cell || (int)cell == -1) continue; + if (!cell || (long)cell == -1) continue; int absx, absy; cell->absolutePosition(absx, absy, false); // ### position: fixed? @@ -2126,7 +2126,7 @@ if (index < 0 || index >= n) continue; RenderTableCell *cell = row->row->at(index); - if (!cell || (int)cell == -1) continue; + if (!cell || (long)cell == -1) continue; #if DEBUG_CARETMODE > 1 kdDebug(6201) << "index " << index << " cell " << cell << endl; diff -urN ../tmp-orig/kdelibs-3.3.1/khtml/xml/dom_docimpl.cpp ./khtml/xml/dom_docimpl.cpp --- ../tmp-orig/kdelibs-3.3.1/khtml/xml/dom_docimpl.cpp 2004-10-07 14:35:07.000000000 +0200 +++ ./khtml/xml/dom_docimpl.cpp 2005-01-05 22:51:28.000000000 +0100 @@ -1730,11 +1730,11 @@ QString name = cs ? n.string() : n.string().upper(); if (!_nsURI) { - id = (NodeImpl::Id) map->ids.find( name ); + id = (NodeImpl::Id) (long) map->ids.find( name ); if (!id && _type != NodeImpl::NamespaceId) - id = (NodeImpl::Id) map->ids.find( "aliases: " + name ); + id = (NodeImpl::Id) (long) map->ids.find( "aliases: " + name ); } else { - id = (NodeImpl::Id) map->ids.find( name ); + id = (NodeImpl::Id) (long) map->ids.find( name ); if (!readonly && id && _prefix && _prefix->l) { // we were called in registration mode... check if the alias exists QConstString px( _prefix->s, _prefix->l );