On Thu, 20 Dec 2001, Zeev Suraski wrote:

> 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...

This solves nothing IMO. The problem is that exit (5) displays '5', and
that must be fixed.

Derick

>
> 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]
>


-- 
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]

Reply via email to