[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: