Hi,

>                         s->acc =
> GET_HEAP(s->execution_stack[s->execution_stack_pos].pc);
> vm.c  374  Info 734: Loss of precision (assignment) (31 bits to 15 bits)

This is a selector read operation; SCI is a 16 bit VM (and we're doing a signed
read here, so I guess that's what it means by 15 bits), so we don't need the
extra sign bits anyway.

>     xstack->variables[VAR_LOCAL] = localvarp;
> vm.c  426  Info 734: Loss of precision (assignment) (31 bits to 16 bits)

The local variable pointer only needs 16 bits.

> vm.c  547  Info 788: enum constant 'Script_Invalid' not used within
> defaulted
>     switch
> vm.c  547  Info 788: enum constant 'Script_None' not used within defaulted
>     switch
> vm.c  547  Info 788: enum constant 'Script_End' not used within defaulted
>     switch

Added those, with an appropriate error message. Thanks!

>       s->acc = ((guint16) POP()) >> s->acc;
> vm.c  576  Info 734: Loss of precision (assignment) (16 bits to 15 bits)

That one definitely works...

[...]

>       utemp = xs->variables[var_number] + (opparams[0] << 1);
> vm.c  1100  Info 701: Shift left of signed quantity (int)

opparams[] here and in the following cases are read as unsigned variables.
(lint can't know this without linking, of course...)

[...]


llap,
 Christoph

Reply via email to