Skip to content

Does FLOAT.FROMBOOLEAN use the correct stack? #1

@rev111

Description

@rev111

I try to convert the result of a boolean operation into a float.
This push program

1000.0 500.0 FLOAT.> FLOAT.FROMBOOLEAN

does not convert the boolean.
However

1000.0 500.0 FLOAT.> 0.0 FLOAT.FROMBOOLEAN

works: The float stack then contains 0 and 1.
I think this is because the stack used for that instruction in line 723 is the float stack:

this[ 'FLOAT.FROMBOOLEAN' ] = new pushInstruction( this.floatStack, pushInstructionFromBoolean );

That stack is empty, and later on, pushInstructionFromBoolean in line 203 is ignoring the instruction.
Question:
Is this correct or a bug? I suspect the boolStack should be used here, but I have too little experience with Push and interpreters to be sure.
If I'm wrong, what would be the correct way to convert a boolean result into a float (0.0 or 1.0)?
EDIT: It seems hackish to me to push the 0 on the stack to make this work. Is there a better way?
EDIT2: I think I found it: I changed line 204 from

if( inStack.length > 0 ) {

to

if( inInterpreter.boolStack.length > 0 ) {

Now the boolean stack is checked for content and the float stack contains the converted boolean.
The first push program above works now, hope this is a fix to the intended purpose.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions