Hi!
Have a look at this snippet of code:
SV* parse_hex (SV* name1,...) {
Inline_Stack_Vars;
int i,len;
long long int ex, val;
val=0;
len=Inline_Stack_Items;
char str[100];
for(i=0;i<len ;i++) {
ex=pow(256,i);
val+=SvIV(Inline_Stack_Item(len-i-1))*ex;
printf("ex=%lli, val=%lli, len=%i\n", ex, val,len);
}
return newSVpvf("%ill", val);
}
You would think it worked... but it doesn't! And why? Because the "%ill"
conversion does NOT work correctly, it wants to write an int (or long int,
dunno) instead, and it gives me back stupid numbers (however, when I write it
to the console, i.e. printf, it gives me the right number). The solution is:
char str[100];
sprintf(str,"%lli",val);
return newSVpvf("%s", str);
(this works 100% correctly)
which is funny, because it slows it down a LOT. I am absolutely sure this is a
bug. Please correct it!
Máté Soós