Package: kaya
Version: 0.1.24-1
Severity: serious
Tags: patch
When building 'kaya' on amd64/unstable,
I get the following error:
ValueFuns.h:93: warning: 'class ExceptionTable' has virtual functions but
non-virtual destructor
Heap.h: In member function 'int Value::getInt()':
Heap.h:68: error: cast from 'void*' to 'int' loses precision
Heap.h: In member function 'void Value::addVal(Value*)':
Heap.h:132: error: cast from 'void*' to 'int' loses precision
Heap.h:132: error: cast from 'void*' to 'int' loses precision
Heap.h: In member function 'void Value::subVal(Value*)':
Heap.h:136: error: cast from 'void*' to 'int' loses precision
Heap.h:136: error: cast from 'void*' to 'int' loses precision
Heap.h: In member function 'void Value::mulVal(Value*)':
Heap.h:140: error: cast from 'void*' to 'int' loses precision
Heap.h:140: error: cast from 'void*' to 'int' loses precision
Heap.h: In member function 'void Value::divVal(Value*)':
Heap.h:144: error: cast from 'void*' to 'int' loses precision
Heap.h:144: error: cast from 'void*' to 'int' loses precision
make[2]: *** [Heap.o] Error 1
make[2]: Leaving directory `/kaya-0.1.24/rts'
With the attached patch 'kaya' can be compiled on amd64 using gcc-4.0.
Regards
Andreas Jochens
diff -urN ../tmp-orig/kaya-0.1.24/libs/image.cc ./libs/image.cc
--- ../tmp-orig/kaya-0.1.24/libs/image.cc 2005-08-02 16:04:33.000000000
+0000
+++ ./libs/image.cc 2005-09-23 06:01:04.000000000 +0000
@@ -23,7 +23,7 @@
int x = p->sx;
int y = p->sy;
KayaValue img = KayaUnion(0,3);
- KayaUnionSetArg(img,0,KayaInt((int)p));
+ KayaUnionSetArg(img,0,KayaInt((long)p));
KayaUnionSetArg(img,1,KayaInt(x));
KayaUnionSetArg(img,2,KayaInt(y));
return img;
@@ -36,7 +36,7 @@
int x = p->sx;
int y = p->sy;
KayaValue img = KayaUnion(0,3);
- KayaUnionSetArg(img,0,KayaInt((int)p));
+ KayaUnionSetArg(img,0,KayaInt((long)p));
KayaUnionSetArg(img,1,KayaInt(x));
KayaUnionSetArg(img,2,KayaInt(y));
return img;
diff -urN ../tmp-orig/kaya-0.1.24/rts/Heap.cc ./rts/Heap.cc
--- ../tmp-orig/kaya-0.1.24/rts/Heap.cc 2005-09-23 06:04:18.000000000 +0000
+++ ./rts/Heap.cc 2005-09-23 06:04:15.000000000 +0000
@@ -92,7 +92,7 @@
void Value::str2int()
{
String* s=getString();
- int val=(int)(strtol(s->getVal(),NULL,10));
+ long val=(long)(strtol(s->getVal(),NULL,10));
setInt(val);
m_funtable = inttable;
}
@@ -134,11 +134,11 @@
void Value::real2int()
{
double v=getReal();
- setInt((int)v);
+ setInt((long)v);
m_funtable = inttable;
}
-void Value::setInt(int i)
+void Value::setInt(long i)
{
m_val=(void*)i;
m_funtable = inttable;
diff -urN ../tmp-orig/kaya-0.1.24/rts/Heap.h ./rts/Heap.h
--- ../tmp-orig/kaya-0.1.24/rts/Heap.h 2005-09-23 06:04:18.000000000 +0000
+++ ./rts/Heap.h 2005-09-23 06:03:16.000000000 +0000
@@ -65,7 +65,7 @@
valtype getType() { return m_funtable->getType(); }
/// Get an integer out. Assumes you've checked/know.
- int getInt() { return (int)m_val; };
+ long getInt() { return (long)m_val; };
/// Get a real number out
double getReal() { return ((Real*)m_val)->number; }
@@ -104,7 +104,7 @@
/// Update to be an integer.
- void setInt(int i);
+ void setInt(long i);
/// Update to be a real
void setReal(double i);
@@ -129,19 +129,19 @@
}
void addVal(Value* v) {
- m_val=(void*)((int)m_val+(int)(v->m_val));
+ m_val=(void*)((long)m_val+(long)(v->m_val));
}
void subVal(Value* v) {
- m_val=(void*)((int)m_val-(int)(v->m_val));
+ m_val=(void*)((long)m_val-(long)(v->m_val));
}
void mulVal(Value* v) {
- m_val=(void*)((int)m_val*(int)(v->m_val));
+ m_val=(void*)((long)m_val*(long)(v->m_val));
}
void divVal(Value* v) {
- m_val=(void*)((int)m_val/(int)(v->m_val));
+ m_val=(void*)((long)m_val/(long)(v->m_val));
}
/// Set an array element.
diff -urN ../tmp-orig/kaya-0.1.24/rts/KayaAPI.cc ./rts/KayaAPI.cc
--- ../tmp-orig/kaya-0.1.24/rts/KayaAPI.cc 2005-08-02 16:04:33.000000000
+0000
+++ ./rts/KayaAPI.cc 2005-09-23 06:02:43.000000000 +0000
@@ -67,7 +67,7 @@
return v->getString()->getVal();
}
-void KayaSetInt(KayaValue v,int i)
+void KayaSetInt(KayaValue v,long i)
{
v->setInt(i);
}
diff -urN ../tmp-orig/kaya-0.1.24/rts/KayaAPI.h ./rts/KayaAPI.h
--- ../tmp-orig/kaya-0.1.24/rts/KayaAPI.h 2005-08-02 16:04:33.000000000
+0000
+++ ./rts/KayaAPI.h 2005-09-23 06:02:51.000000000 +0000
@@ -22,7 +22,7 @@
KayaArray newKayaArray(int size);
// Make new, initialised values.
- KayaValue KayaInt(int x);
+ KayaValue KayaInt(long x);
KayaValue KayaChar(char c);
KayaValue KayaFloat(float f);
KayaValue KayaString(char* str);
@@ -36,7 +36,7 @@
KayaArray KayaGetArray(KayaValue v);
// Set basic values
- void KayaSetInt(KayaValue v,int i);
+ void KayaSetInt(KayaValue v,long i);
void KayaSetChar(KayaValue v,char c);
void KayaSetFloat(KayaValue v,double f);
void KayaSetString(KayaValue v,char* s);
diff -urN ../tmp-orig/kaya-0.1.24/rts/ValueFuns.cc ./rts/ValueFuns.cc
--- ../tmp-orig/kaya-0.1.24/rts/ValueFuns.cc 2005-08-02 16:04:33.000000000
+0000
+++ ./rts/ValueFuns.cc 2005-09-23 05:58:50.000000000 +0000
@@ -94,7 +94,7 @@
/// This is probably quite meaningless
Value* FnTable::cmp(Value* x, Value* y)
{
- return new Value((void*)((int)(x->getRaw())-(int)(y->getRaw())),inttable);
+ return new
Value((void*)((long)(x->getRaw())-(long)(y->getRaw())),inttable);
// kaya_throw("Can't compare closures sensibly",1);
// return new Value(0,inttable);
}
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]