The Curse
Occassionally I’m in need of some small tools for the projects I’m working on (Delphi, PHP, Java, C++), so I use my favourite compiler (Delphi) and start hacking. In the late 90’s I’ve released a bunch of freeware components and units for CodeGears Delphi (former Borland) – some of them were rock solid coded, but well, some were just fast hacks needed for those small utilities. The later one applies to THTMLParser, a HTML parsing unit which was released 1998 with full source code on the Delphi Super Page.
Years later (2006), I’ve stumbled across a page called “Memory Leak and the curse of Dennis Spreen” which refered to a bug in the code of the THTMLParser which led to a memory leak if used on a lot of HTML files. Since I wrote this parser for a one-time-run-utility I didn’t noticed the memory leak. But other coder used this source code to enhance it with some nice features while leaving the memory leak bug in the source code. So alot of HTML parser were released then by different people based on the THTMLParser code – but all with one thing in common: my memory leak bug (now refered to as “the curse”).
Sure it was frustrating while searching for a HTML parser component, finding some and downloading them but all with the same memory leak bug inside:-)
I’ve read about the complaints on the parser (no one questioned me ever directly about this memory bug, even though I’ve put my web adress in all source code files) and finally fixed the memory leak.
But due to the nature of the internet the curse will still be living on, since all the other not fixed components floating around still have this memory leak bug…
Update 2010/4: I got an email from Rod called “The Curse – explained”:
“The Curse of Dennis Spreen” evolved between myself and several other Delphi coders as a bit of a joke. Once upon a time, we were writing a web crawler and happily using your component as our parser. Thousands and thousands of lines of code into this project, we started noticing some goofy things happening. The program would bog down and if left to run for several days, just crash the entire machine. The worst part, was that the program would run for hours and hours with no problem whatsoever. In order for us to track down the errors, we had to let it run for hours and hopefuly figure out where the problem was or pour through tons of code matchng up .create and .free. We were broke so our memory leak detector was a pair of eyeballs and task manager. We spent weeks. At one point, one of the guys walks up to my desk with a naked Barbie doll dangling from a string in his hand. He holds it over my monitor and starts stabbing the doll with a straightend out paper clip. He explaind he was using voodoo to remove the curse from my machine so our code would work. The next day, we tracked the leak down to your parser code and from that day forward, those two weeks were designated the “Curse of Dennis Spreen.” I think we tried to contact you back then but never got a response and ended up using a different parser.
A few years later I was hunting down another HTML parser and downloaded the one from WAK Productions and happlily plugged it in. It looked very familiar but nothing jumped out at me. Again, days later I’m starting to notice some really wierd problems. It took me a lot less that two weeks, but I’m sure you can imagine my surprise when I saw it was actually your code in the parser. Yet again, you had come back to haunt me and I had to relay the story to my old friends from the first project. They unoficially named it “The Curse of Dennis Spreen 2, the sequal.” One of them later mailed me a naked Barbie doll and some straight pins inside a plastic bag with the label, “break in case of emergency.”
So now you know the story behind the “Curse of Dennis Spreen.” I’m sure you had no idea it involed naked voodoo Barbie dolls. Kind of funny to think about how little things you do in life and think nothing of it can have an impact on peope half way around the planet.
Glad to see you fixed it, Dennis. It’s nice to know that I have one less curse to worry about coming back to haunt me 🙂
Cheers,
Rod
About Dennis D. Spreen
Search
Recent Posts
- How to compile Lua 5.4.0 for Android as a dynamic library using Android Studio 4
- Please make inline vars usable for production – fix RSP-28892
- How to compile Lua 5.4.0 as a Mac OS X dynamic library
- How to compile Lua 5.4.0 for Linux as a shared library
- How to compile Lua 5.4.0 for Windows
- Daily Wage – a Spigot/Bukkit plugin that pays out a daily wage
- How to compile Lua 5.3.5 for Windows
- Better Collada exporter for Blender with custom properties
- MOS6502-delphi – a MOS 6502 CPU emulator for Delphi
- Pass a multidimensional array as a parameter (with a hidden caveat)
Categories
Tags
Archives
- May 2020
- March 2020
- June 2019
- March 2017
- August 2016
- July 2016
- June 2016
- January 2016
- September 2015
- February 2015
- January 2015
- October 2014
- September 2014
- August 2014
- May 2014
- March 2014
- February 2014
- November 2011
- June 2011
- February 2011
- March 2010
- September 2009
- August 2009
- July 2009
- May 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- February 2008
- June 2007
Delphi Feeds
- Habari STOMP Client libraries release 2024.12 December 7, 2024
- Delphi and AI December 7, 2024
- Uses Clause Manager topic added to the GExperts help December 6, 2024
- Upgrading C++Builder 12.2: Tip #4 1/2: Check out compiler safety options December 6, 2024
- Upgrading C++Builder 12.2: Tip #4, Take Advantage of Security and Correctness December 5, 2024
- .NET MAUI: Complete Guide December 4, 2024
- Upgrading C++Builder 12.2: Tip #3, Massive Files with iostreams December 4, 2024
- Log exceptions in your Delphi app in the cloud with StellarDS.io December 4, 2024
- Introducing Signotaur - Remote Code Signing Server December 4, 2024
- Upgrading C++Builder 12.2: Tip #2, Handling Old RTL December 3, 2024