either I'm a complete jerk or isn't this code here:
val+=SvIV(Inline_Stack_Item(len-i-1))*ex;
a problem? Are you trying to loop through the var
stack backwards or ?? I don't think you're getting the
values you expect to find at your specified index... good luck.
-nw
On 5/10/05, So�s M�t� <[EMAIL PROTECTED]> wrote:
> 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
>
>