[#4479] Requesting addition to IRB (configurable standard output) — Sascha Ebach <se@...>

Hello,

13 messages 2005/02/24
[#4482] Re: Requesting addition to IRB (configurable standard output) — Sam Roberts <sroberts@...> 2005/02/25

Quoting se@digitale-wertschoepfung.de, on Fri, Feb 25, 2005 at 01:22:34AM +0900:

[#4483] Re: Requesting addition to IRB (configurable standard output) — Eric Hodel <drbrain@...7.net> 2005/02/25

On 24 Feb 2005, at 19:51, Sam Roberts wrote:

[#4488] Re: Requesting addition to IRB (configurable standard output) — Sam Roberts <sroberts@...> 2005/02/26

Quoting drbrain@segment7.net, on Sat, Feb 26, 2005 at 02:43:31AM +0900:

[#4489] Re: Requesting addition to IRB (configurable standard output) — Eric Hodel <drbrain@...7.net> 2005/02/26

On 25 Feb 2005, at 16:03, Sam Roberts wrote:

Re: Strange argc check in stable snapshot

From: Steven Jenkins <steven.jenkins@...>
Date: 2005-02-23 21:23:48 UTC
List: ruby-core #4473
Berger, Daniel wrote:
>>int main(int argc, char *argv[])
>>{
>>     if (argc < 0)
>>         return 0;
>>     else
>>         main(-1, 0);
>>}
>>
>>This is perfectly legal C. There's nothing special about 
>>main() except 
>>that the loader uses it as the entry point. Any other 
>>function can call 
>>it, including itself.
>>
>>The argc in question is nonnegative by convention only. Someone could 
>>just make a mistake and call it with the wrong argument.
>>
>>Steve
> 
> Not exactly what I meant, but I'll donate $100 anyway.  I would consider
> specifying argc manually a BUG.  At the very least, it's really crappy
> code and not the sort of thing I would make an explicit check for.  I
> would force a change in the offending caller's code.

Of course it's a bug. That's what the test is for.

Two examples are getting confounded here. My only purpose in citing the 
main() example was to show that even the case where everyone assumes 
argc *cannot* be negative, it can. I can think of other ways to do it 
with syntactically and semantically conforming but buggy code (e.g., 
off-by-one errors, typos), and just bad code (stack corruption).

The function under consideration here, however, is not main(), but a 
part of the Ruby interpreter. If Matz and the other developers don't 
make a mistake, it will never be called with invalid arguments.  If Matz 
decides that the probability of making that particular mistake is so low 
as to not bother, that's reasonable... even though there's virtually 
nothing you can do on a computer that's as fast as checking the sign of 
an integer.

What's not reasonable is saying it can't happen. It can.

But to be a good sport about it, I'll donate $100 too. Let's make this 
like a political fundraiser: $100 to participate in the thread. Any 
takers? :-)

Steve


In This Thread

Prev Next