• Troy@lemmy.ca
    link
    fedilink
    arrow-up
    40
    ·
    5 days ago

    I love hitting these things in the real world. Not the big, but the comment. You just know someone spent a fortune in time and company resources to never solve the problem and their frustration level was ragequit. But then something stupid like adding

    while (0){};

    Suddenly made it work and they were like, fuckit.

    Usually it’s a bug somewhere in a compiler trying to over optimize or something and putting the line in there caused the optimization not to happen or something. Black magic.

    The downside is that the compiler bug probably gets fixed, and then decades later the comment and line are still there…

    • nogooduser@lemmy.world
      link
      fedilink
      English
      arrow-up
      12
      ·
      5 days ago

      I used to work on an old DOS product and we didn’t have a debugger so we used to have a DEBUG command line argument with

      if (DEBUG) printf(“debugging”);
      

      to try to see what was happening and the number of times that code alone fixed the problem was scary.

      • psycho_driver@lemmy.world
        link
        fedilink
        arrow-up
        5
        ·
        5 days ago

        I mean . . . I still do this on my own stuff. If I’m interested in optimizing for speed I’ll do it as #ifdef instead of if ()

    • zea@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      10
      ·
      5 days ago

      And then the compiler updates to get better at spotting optimization opportunities and it blows up again

    • GarlicToast@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      4 days ago

      The real world case I remember also included a TODO to return and fix the code later. In a published scientific software. I wonder how many paper were messed up by this buggy software. As I looked at the code due to the amount of bugs I encountered.

      It’s been many years from publication, and to the surprise of no one, they did not return to fix it.