Bug#288900: kdelibs: FTBFS (amd64/gcc-4.0): cast from 'Q_UINT32*' to 'unsigned int' loses precision
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 );
Reply to: