Title:
[ANeff] Bug for: java.lang.VerifyError if ternary operandIfTrue is CFDouble
| View in TrackerStatus/Resolution/Reason: Closed/Withdrawn/Duplicate
Reporter/Name(from Bugbase): Aaron N. / ()
Created: 02/02/2019
Components: Language, Datastructure
Versions: 2018
Failure Type: Crash
Found In Build/Fixed In Build: 2018.0.0.310739 /
Priority/Frequency: Normal / Few users will encounter
Locale/System: / Windows 10 64 bit
Vote Count: 1
Issue: `condition?operandIfTrue:operandIfFalse` throws "Unable to pop operand off an empty stack" java.lang.VerifyError if operandIfTrue is coldfusion.runtime.CFDouble
Repro:
-----------
<cfscript>
myDouble = 1.1;
writeOutput(myDouble.getClass().getName());//coldfusion.runtime.CFDouble (in CF2018+)
myCondition = true;
myResult = myCondition ? 1 : 1.1;
writeOutput(myResult);//1 (good)
myCondition = false;
myResult = myCondition ? 1 : 1.1;
writeOutput(myResult);//1.1 (good)
condition = true;
result = condition ? 1.1 : 1;
writeOutput(result);//class error "Unable to pop operand off an empty stack" (bad; should return 1.1)
condition = false;
result = condition ? 1.1 : 1;
writeOutput(result);//class error "Unable to pop operand off an empty stack" (bad; should return 1)
condition = true;
result = condition ?: 1.1;
writeOutput(result);//true (good)
condition = false;
result = condition ?: 1.1;
writeOutput(result);//1.1 (good)
//Note: Pre-CF2018's myDouble is java.lang.Double, and all the above return correctly.
</cfscript>
-----------
See coldfusion-error.log, coldfusion-out.log and exception.log.
Attachments:
Comments: