more checks for NaN/errors before performing operations
This commit is contained in:
parent
23e49a0405
commit
5a3dc2337d
21
src/calc.c
21
src/calc.c
@ -84,8 +84,10 @@ void process_cmd(char cmd){
|
|||||||
} break;
|
} break;
|
||||||
//////////
|
//////////
|
||||||
case '=':{
|
case '=':{
|
||||||
StackPtr--;
|
if (!decn_is_nan(&stack(STACK_X))){
|
||||||
copy_decn(&stack(STACK_X), &stack(STACK_Y));
|
StackPtr--;
|
||||||
|
copy_decn(&stack(STACK_X), &stack(STACK_Y));
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
//////////
|
//////////
|
||||||
case 'c':{
|
case 'c':{
|
||||||
@ -93,14 +95,19 @@ void process_cmd(char cmd){
|
|||||||
} break;
|
} break;
|
||||||
//////////
|
//////////
|
||||||
case '<':{ //use as +/-
|
case '<':{ //use as +/-
|
||||||
negate_decn(&stack(STACK_X));
|
if (!decn_is_nan(&stack(STACK_X))){
|
||||||
|
negate_decn(&stack(STACK_X));
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
//////////
|
//////////
|
||||||
case 'r':{ //use as swap
|
case 'r':{ //use as swap
|
||||||
dec80 tmp;
|
if (!decn_is_nan(&stack(STACK_X))){
|
||||||
copy_decn(&tmp, &stack(STACK_X));
|
dec80 tmp;
|
||||||
copy_decn(&stack(STACK_X), &stack(STACK_Y));
|
copy_decn(&tmp, &stack(STACK_X));
|
||||||
copy_decn(&stack(STACK_Y), &tmp);
|
copy_decn(&stack(STACK_X), &stack(STACK_Y));
|
||||||
|
copy_decn(&stack(STACK_Y), &tmp);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
} break;
|
} break;
|
||||||
//////////
|
//////////
|
||||||
} //switch(cmd)
|
} //switch(cmd)
|
||||||
|
Loading…
Reference in New Issue
Block a user