How to create an infinite loop

Obvious in retrospect, but took me a minute to catch on to what’s going on here:

public void DoStuff(byte maximum)
{
    for(byte i = 1; i <= maximum; i++)
    {
      // whatever
    }
}

This works like a trooper until someone passes in a byte.MaxValue in a unit test and i becomes 0 after reaching maximum and getting incremented again.

Previous Post
Leave a comment

3 Comments

  1. Cory Fowler's avatar

    Could you imagine finding that as a defect down the road…. Thank God for Unit Tests!

    Reply
  2. Joshua Kehn's avatar

    Interesting bug, glad it got caught. Looks inconspicuous enough.

    Reply
  3. Jduv's avatar

    This is where the checked keyword can save your bacon.

    Reply

Leave a reply to Jduv Cancel reply