Over a million developers have joined DZone.

Increment Operator Issue with ColdFusion 8 Arrays

· Web Dev Zone

Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

I spent a good 30 mins debugging a module in one of our products that has been running fine in CF8 for a while but crashed when run on CF9 recently. The problem turned out to be a bug in my code but it also unveiled this freaky bug with CF8. It turns out that if you try to increment the value of a variable used as an array index when assigning a structure or array to that index using literal syntax then the variables value is not incremented. Here’s an example of what I found!

The below code shows a very simplified version of the code scenario, bug and all. The bug is on line 17 where at the root node I had left in an increment operator that I had removed from all other assignments to the array within the loop and added to the end. In CF8 this was working fine because level was not being incremented. In CF9 level was being incremented, as is should have been in CF8, and the root node was being added one index past where it should have been at the end of the array. I have tested this with adding both a structure and an array using the literal syntax and in both cases level is not incremented. When assigning a simple value or a variable that references an array or structure level is incremented. Weird!!

  path = []; // cached path out to root node
  ended = false; // ended = true once we reach the root
  nodeID = 1; // leaf node db id --would have been passed in
  level = 1; // levels up from leaf nodeID
  // very simplified version of the code
  while (!ended) {
    parentDept = getParentDept(nodeID);
    if (parentDept) { 
      path[level] = {
        id = parentDept
        // and other stuff...
      nodeID = parentDept;
    } else {
      path[++level] = { // doesn't increment level in CF8!
        id = 0 
        // other stuff...
      ended = true; // root node
   * dummy function for example - was actuall a call to db 
   * for the parent department in a staff directory
  function getParentDept(id) {
    if (id < 10) {
      return id + 1;
    } else return 0;

Source: http://www.profilepicture.co.uk/tutorials/increment-operator-issue-coldfusion-8-arrays/

Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.


The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}