4 ms·
Agreed, the example used seems very strange. Every function makes functions about it's parameters and in C null terminated string are to be assumed unless other
by jpablo 15y ago
Agreed, the example used seems very strange. Every function makes functions about it's parameters and in C null terminated string are to be assumed unless otherwise noted. The std library strcpy would just behave in an identical way.
Yeah, I'm all about checking your assumptions and defensive programming but k&r is hardly as fault because you throw garbage at a random function and it segfaults.
I find the idea of teaching modern C by pointing problems k&r awesome, but the examples given are not really good.
- angersock 15y agoYeah, I'm all about checking your assumptions and defensive programming but k&r is hardly as fault because you throw garbage at a random function and it segfaults. Maybe he should write a series on "Learn Ada the Hard Way"?
- beagle3 15y ago(apologies for hijacking an unrelated thread, but I have no way of contacting you ...) During our discussion of the redis/windows release, you mentioned your team is about to release some library code around new-years day. Has that release happened? If so, where can I find it? Thanks in advnace --beagle3
- angersock 15y agoYeah, sure! Code's up here: www.762studios.com It's been up about a week or so. (EDIT: we had it up on the first, technically.) We're pushing out a significant update to that code in the next few days, as well as polishing the site with the bugtracker and things. One of the big problems we ran into was function-level specialization for certain container classes--storing smart pointers in certain cases would screw up the reference counting. The code update will be fixing that. If you want to get in touch, shoot me an email at cre1@762studios.com Happy hacking! :)
- beagle3 15y agoThanks! Looks like a solid, high quality code base from a quick look. Keep up the good work!
- zedshaw 15y agoYou should go read about fuzzing. It's amazing what throwing "random garbage" at programs can break.
- jpablo 15y agoPassing random garbage to a random function is not the same as passing random input to a program. Take for example one of the most common bugs in C (even more common than not null terminating strings I'll say) passing already freed memory, are you going to argue that a function has a bug because it'll randomly give root access to outsiders because someone took it out of context and passed a stray pointer to it. Calling a function that expects to get a null terminated string buggy because you passed a pascal string and it crashes seems weird at least. I'll call it potentially dangerous when misused (like most of C code anyway), but not buggy, since it's behaved as designed. C is an unsafe language and yes, you can validate a lot of things, but at the end of the day it's still a unsafe language, the solution in my opinion is to advocate the use of safer languages and only use C for when it's strictly necessary.