tracker issue : CF-4206403

select a category, or use search below
(searches all categories and all time range)
Title:

Certain syntax breaks the interpreter (compiler)

| View in Tracker

Status/Resolution/Reason: To Fix//BugVerified

Reporter/Name(from Bugbase): Roman G. / ()

Created: 12/17/2019

Components: Language, Application Framework

Versions: 2016,2018

Failure Type: Crash

Found In Build/Fixed In Build: 2016 UPDATE 12, 2016 UPDATE 13 /

Priority/Frequency: Normal / All users will encounter

Locale/System: English / Linux

Vote Count: 0

Problem Description:
With 2016 UPDATE 12 or 13 we discovered a strange and unpredictable behavior that only happens for certain Code structures. 
It can best be explained by the following example. 

Steps to Reproduce:
I was able to reproduce it with this simple pice of code:

<cffunction name="givemesomething">
    <cfargument name="somestruct">

    <cfreturn arguments.somestruct.device>
</cffunction>

<cfoutput>
    <cfif isDefined("url.udid")>
        <cfset local.device.udid = url.udid>
        #givemesomething({ device = local.device.udid })#
    <cfelse>
        No udid given.
    </cfif>
</cfoutput>

Call this code with the url-paramter udid=123

Actual Result:
Server Error with message:
Variable LOCAL is undefined.

Expected Result:
Output:
"123"

Any Workarounds:
If you remove the <cfelse> part this code works as expected. This makes absolutely no sense to me and it would break some of our code in production if we update to 12 or 13.

Attachments:

Comments: