Commit graph

1293 commits

Author SHA1 Message Date
Felipe Pena
7a72405171 Merge branch 'PHP-5.3' into PHP-5.4
* PHP-5.3:
  - Value stored to var is never used
2012-08-19 12:44:49 -03:00
Felipe Pena
001966c754 - Value stored to var is never used 2012-08-19 12:44:44 -03:00
Xinchen Hui
d289efb457 Merge branch 'PHP-5.3' into PHP-5.4
Conflicts:
	Zend/zend_API.h
2012-08-04 11:14:03 +08:00
Xinchen Hui
f4a315fce2 This becomes useless, since we have set that in the INIT macro 2012-08-04 11:03:21 +08:00
Xinchen Hui
03a1fcabf3 Fixed bug #62744 (dangling pointers made by zend_disable_class)
the test will be added while commit the fix for #62737
2012-08-04 10:41:26 +08:00
Gustavo André dos Santos Lopes
13f1d53b68 Expose zend_parse_arg() as zend_parse_parameter()
Sometimes, one wants to accept several types for a given parameter. zpp
has special functionality for detecting the NULL type, since the NULL
type is frequently used to skip parameters.

However, supporting several types is otherwise very tedious. There are
many cases where this situation arises -- for instance one may want
to accept an arbitrary number of integer and expect them in an array,
but allow a bare integer too; one may want to accept something that
will be used as an array key (which can be either and int or a string);
one may want to accept integer and double numbers. A search for IS_LONG
reveals many situations where this need arises.

The usual solution is to fetch the argument with 'z'/'Z', check its
type, and then convert the argument, e.g. with convert_to_long_ex().
As explain in the last commit, this has different behavior and
generates inconsistency.

Another -- even more flawed strategy --, is to try zpp with a specific
format, forcing it quiet, and if it fails retrying with another form.
But because zpp changes the arguments directly in the stack (for
instance, using "l" converts the zval in the stack to IS_LONG), the
arguments may look different after the first zpp, leaving subtle bugs.

This commit also allows more complex scenarios, for instance where the
expected type of one parameter depends on other parameters.
2012-07-18 23:30:03 +02:00
Gustavo André dos Santos Lopes
980dc7111b zend_parse_parameters: allow ! for non pointers
This commit allows getting information about whether a certain value
was a NULL value by using the ! modifier together with the l/L, d and
b.

Example:
long l;
zend_bool is_null;
zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l!", &l, &is_null)

For the specifiers l/L, d and b, NULL values are reported as 0, 0., or
false. But sometimes one wants to distinguish NULL from those other
values -- for instance, to give NULL the same effect as the argument
not having been passed.

The usual way this problem is handled is by fetching the parameter
with 'z' or 'Z', check if it is NULL and if not use
convert_to_long_ex()/convert_to_double_ex(), etc. Unfortunately, this
is not equivalent. convert_to_long_ex() does a cast, while zpp() is
stricter. For instance, zpp will not accept 'foo' for a long argument,
and it will emit a notice when encountering '5foo'.

In fact, the only way to otherwise zpp semantics (without duplicating
its logic) is to fetch the raw zval from the stack and check whether
it's NULL (with zpp itself or its relatives) and then run zpp again.
That is not an elegant solution.
2012-07-18 23:30:03 +02:00
Johannes Schlüter
82c05eeda9 Copy default properties of internal classes for different threads 2012-04-11 19:21:41 -07:00
Derick Rethans
ecf8986a9a Add the ZEND_DONT_UNLOAD_MODULES environment variable for debugging to 5.3 as
well.
2012-03-06 18:25:55 +00:00
Dmitry Stogov
e182aeec10 Fixed module numbering 2012-03-05 12:47:25 +00:00
Dmitry Stogov
56a3f7eca8 Fixed module numbering 2012-03-05 12:47:25 +00:00
Xinchen Hui
0e4d46a3a7 MFH: Fix bug #61165 (Segfault - strip_tags()) 2012-03-02 02:51:57 +00:00
Xinchen Hui
5f4ae28459 Improve fix for #61165, the previous one cause #43450 test failed 2012-02-26 14:56:26 +00:00
Xinchen Hui
1ee93c83ff Fixed bug #61165 (Segfault - strip_tags()) 2012-02-25 04:36:08 +00:00
Felipe Pena
e4ca0ed09f - Year++ 2012-01-01 13:15:04 +00:00
Felipe Pena
4e19825281 - Year++ 2012-01-01 13:15:04 +00:00
Stefan Marr
2e5d5e5ac6 Fixed Bug #60173 (Wrong error message on reflective trait instantiation) 2011-10-31 22:59:00 +00:00
Dmitry Stogov
4a25a7740d Fixed ZE specific compile warnings (Bug #55629) 2011-09-13 13:29:35 +00:00
Hannes Magnusson
e5553b210a Revert r316345 which fixes all the tests again 2011-09-07 13:50:18 +00:00
Pierre Joye
59614b05c4 - reject paths with trainling spaces using the very good new zend arg 2011-09-07 12:33:22 +00:00
Hannes Magnusson
550980cfe5 Callable typehint following the rules of is_callable($arg, false); 2011-08-16 10:44:47 +00:00
Felipe Pena
619cfeef46 - Revert r314387
(property_info.name has the mangled name)
2011-08-07 13:04:02 +00:00
Rasmus Lerdorf
e2315d295a Use property_info.name here instead since *name might be free'ed at this point
@dmitry please review
2011-08-07 00:01:17 +00:00
Felipe Pena
13eb47a8bc - Added missing PHP_FE_END/ZEND_FE_END 2011-08-06 01:22:27 +00:00
Felipe Pena
783b05326a - Added missing PHP_FE_END/ZEND_FE_END 2011-08-06 01:22:27 +00:00
Rasmus Lerdorf
2b6a290d55 Another potential missing va_end() found by Coverity 2011-08-05 22:26:16 +00:00
Rasmus Lerdorf
c1c2e18cb5 Another potential missing va_end() found by Coverity 2011-08-05 22:26:16 +00:00
Derick Rethans
4e5960ed88 - Added a check for an enviroment variable (ZEND_DONT_UNLOAD_MODULES) that, if
set, prevents PHP from dl_closing() modules on shutdown.
- This makes it possible to spot memory leaks with valgrind in shared modules.
2011-07-14 12:21:15 +00:00
Felipe Pena
9aa25d0938 - Minor optimization taking the computed hash of interned strings 2011-07-10 12:37:42 +00:00
Felipe Pena
ce211cf5e6 - Minor optimization, use the computed hash when available 2011-07-10 02:00:00 +00:00
Felipe Pena
0a0443f07c - Missing fixes for grammar fix 's/valid path/a valid path/' 2011-06-09 00:23:43 +00:00
Felipe Pena
ddaddf6c2a s/valid path/a valid path/ 2011-06-08 00:53:55 +00:00
Felipe Pena
32b5f8a1a3 - Added new parameter parsing option (p - for valid path (string without null byte in the middle))
# The tests will be fixed in the next commits
2011-06-06 21:28:16 +00:00
Stanislav Malyshev
e18618905c scalar types cleanup 2011-06-03 01:09:32 +00:00
Dmitry Stogov
eaeb4537ec MFH: Fixed bug #54910 (Crash when calling call_user_func with unknown function name) 2011-05-31 11:36:57 +00:00
Dmitry Stogov
c989a36927 Fixed bug #54910 (Crash when calling call_user_func with unknown function name) 2011-05-31 09:20:51 +00:00
Pierre Joye
6aed81764e - fix bug #54423, fix build in trunk, introduce by previous related commit 2011-03-31 23:58:06 +00:00
Antony Dovgal
dd5781bcdf fix bug #54423 (classes from dl()'ed extensions are not destroyed) 2011-03-31 11:59:34 +00:00
Antony Dovgal
6e7a3015e5 fix bug #54423 (classes from dl()'ed extensions are not destroyed) 2011-03-31 11:59:34 +00:00
Felipe Pena
64bbdd76c3 - Fixed bug #53717 (checking the number of arguments is wrong in zend_parse_method_parameters_ex())
patch by: klaus at triendl dot eu
2011-01-12 22:17:10 +00:00
Felipe Pena
c6544fad1a - Fixed bug #53717 (checking the number of arguments is wrong in zend_parse_method_parameters_ex())
patch by: klaus at triendl dot eu
2011-01-12 22:17:10 +00:00
Felipe Pena
927bf09c29 - Year++ 2011-01-01 02:19:59 +00:00
Felipe Pena
0203cc3d44 - Year++ 2011-01-01 02:17:06 +00:00
Dmitry Stogov
3690ce39d9 zend_collect_module_handlers() has to be called after zend_extensions startup, because they can register additional 'hidden' extensions 2010-10-15 07:30:24 +00:00
Hartmut Holzgraefe
aaa2f1c30b marked char pointer arguments as const in lots of
places where strings pointed to are not modified 
to prevent compiler warnings about discarded qualifiers ...
2010-10-14 21:33:10 +00:00
Dmitry Stogov
f2df6a4a3e - Improved memory usage
. zend_function.pass_rest_by_reference is replaced by
    ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags
  . zend_function.return_reference is replaced by ZEND_ACC_RETURN_REFERENCE
    in zend_function.fn_flags
  . zend_arg_info.required_num_args removed. it was needed only for internal
    functions. Now the first arg_info for internal function (which has special
    meaning) is represented by zend_internal_function_info structure.
  . zend_op_array.size, size_var, size_literal, current_brk_cont,
    backpatch_count moved into CG(context), because they are used only during
    compilation.
  . zend_op_array.start_op is moved into EG(start_op), because it's used
    only for 'interactive' execution of single top-level op-array.
  . zend_op_array.done_pass_two is replaced by ZEND_ACC_DONE_PASS_TWO in
    zend_op_array.fn_flags.
  . op_array.vars array is trimmed (reallocated) during pass_two.
  . zend_class_entry.constants_updated is replaced by
     ZEND_ACC_CONSTANTS_UPDATED in zend_class_entry.ce_flags
  . the size of zend_class_entry is reduced by sharing the same memory space
    by different information for internal and user classes.
    See zend_class_inttry.info union.
2010-09-15 07:38:52 +00:00
Sascha Schumann
50a0ea7b8c separate properties of internal classes in ZTS mode fully,
otherwise multiple threads will modify the zvals' contents
without any synchronisation.
2010-08-12 07:58:14 +00:00
Dmitry Stogov
7566ff38a1 Fixed support for static properties of internal classes 2010-08-11 08:34:54 +00:00
Felipe Pena
3ea3bbaca3 - Fix ZTS build 2010-07-06 15:52:39 +00:00
Dmitry Stogov
1a1178a685 eliminated unnecessary iterations during request startup/shutdown 2010-07-06 11:40:17 +00:00