This patch is fine with me, but as it would still print out the error
message, I think it's not fine with some other people...
At 16:29 20/12/2001, Lars Torben Wilson wrote:
>Zeev Suraski writes:
> > At 15:18 20/12/2001, Yasuo Ohgaki wrote:
> > >Nobody should complain about BC changes if changes are notified
> > >early enough and there is alternative way to do the same thing.
> > >IMHO. (This has been done for some features such as track vars ;)
> >
> > That's a very impractical statement in my opinion... Breaking
> > compatibility hurts (almost) regardless of when you announce you're going
> > to break it. Users would still have to go over their code and fix it.
> >
> > What I *really* fail to understand is the gain we get by modifying
> exit()'s
> > behavior, as opposed to adding a new function or adding a new $silent
> > argument. Giving a WFF to several people? Consistency with other
> > languages that have nothing to do with the Web environment (which is
> why we
> > got so little complaints about this over *5* years)?
>
>What would the problem be with the attached patch (against PHP
>4.1.0rc3)? This patch meets the following criteria:
>
> o Backward compatibility is maintained, since strings passed to
> exit() will still be output. BC will only break in those instances
> where something depends on the fact that PHP will not set the exit
> code when exiting with a string--very unlikely. This should keep
> the BC people happy and not introduce any new surprises.
> o No new functions need to be created, and no new arguments need to
> be added to exit(). This should keep the No New Functions or
> Arguments For Small Functionalities people happy.
> o exit() will now behave like other PHP functions wrt its argument
> type. Whereas a PHP programmer expects the calls
> somefunc('2') and somefunc(2) to behave identically, exit() breaks
> this mould. This patch rectifies that, so that exit('2') and
> exit(2) will now behave the same. Again, the only time BC is broken
> is in cases where something depends on i.e. exit('2') outputting
> '0'--which is likely to be *very* rare since it doesn't make any
> sense.
>
>Of course, the criterium which this patch does not fulfil is that of
>killing the output from exit(), which would break BC. However, it
>would still be possible to add an option second argument to exit()
>which would suppress this output, but be off by default.
>
> > I see this as very similar to the case sensitivity issue, even though this
> > is obviously on a much smaller scale. It's possibly a bad decision that
> > was made 5 years ago, but it was made all the same. Since it does *not*
> > have far-reaching negative implications, it shouldn't be changed.
> >
> > Zeev
>
>The current behaviour may not be earthshatteringly bad, but it does
>break language consistency and so introduces a higher memory load on
>the user (gotta remember that everything works the same 'cept
>exit()). It also tends to keep some people (OK, at least me) from
>doing much non-web scripting in PHP since it's a fairly fundamental
>bit of functionality which is something of a bother to work
>around. Not a major bother, but enough.
>
>My point is this: we don't break, lose, or complicate anything with
>this patch, and it makes the language more consistent and generally
>usable.
>
>Just my $0.02 for the night.
>
>
>Torben
>
>--- zend_execute.bak Wed Dec 19 16:19:44 2001
>+++ zend_execute.c Wed Dec 19 16:37:29 2001
>@@ -2379,11 +2379,16 @@
> case ZEND_EXIT:
> if (opline->op1.op_type != IS_UNUSED) {
> zval *ptr;
>+ zval exit_code;
>
> ptr = get_zval_ptr(&opline->op1,
> Ts, &EG(free_op1), BP_VAR_R);
>- if (Z_TYPE_P(ptr) == IS_LONG) {
>- EG(exit_status) =
>Z_LVAL_P(ptr);
>- }
>+
>+ exit_code = *ptr;
>+ zval_copy_ctor(&exit_code);
>+ convert_to_long(&exit_code);
>+
>+ EG(exit_status) =
>Z_LVAL_P(&exit_code);
>+
> zend_print_variable(ptr);
> FREE_OP(&opline->op1, EG(free_op1));
> }
>
>
>
>--
> Torben Wilson <[EMAIL PROTECTED]>
> http://www.thebuttlesschaps.com
> http://www.hybrid17.com
> http://www.inflatableeye.com
> +1.604.709.0506
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]