• 0 Posts
  • 15 Comments
Joined 2 years ago
cake
Cake day: July 1st, 2023

help-circle





  • kionay@lemmy.worldtoProgrammer Humor@programming.devErrors
    link
    fedilink
    English
    arrow-up
    4
    ·
    3 months ago

    I once worked in a program that allowed custom C# scripts to be written into it to add custom functionality. The way it worked under the hood however was that the code written in the text field would be stitched together into a longer file and the whole thing compiled and ran. The developers didn’t want people to have to write or understand boilerplate code like import statements or function declarations so the place you typed into was the body of a function and some UI was used to get the rest of the bits that would create generated code for everything else.

    To add to that there was a section of global code where you could put code explicitly outside of functions if you knew what you were doing. This wouldn’t get code-generation-wrapped into a function, just at the top of the class. It did, however, only run and get runtime checking when one of the functions was ran. And since the program didn’t grasp that the global code error line number should be with respect to the global code block and not the function code block you could get errors on line -54 or whatever since the final generated file landed the global broken code 54 lines before the beginning of the function.

    Not that any of this was told to the user. I only found out because early versions of the app wasn’t compiled with obfuscation so ILSpy let me see how they rigged the thing to work.

    Error on line -54 will probably be what made me the most dumbstruck in all of development.







  • kionay@lemmy.worldtomemes@lemmy.worldAmiright?
    link
    fedilink
    English
    arrow-up
    9
    ·
    1 year ago

    ECMAScript spec says Math.random must be less than 1. I was about to stop there, but a thought occurred to me: could the multiply with a float make a number large enough to floor to a different value for large enough values? 🤔

    I imagine it’d have to be a ridiculously large number to amount enough floating point imprecision to matter, if so.