|
27 | 27 | #include "zend_exceptions.h"
|
28 | 28 |
|
29 | 29 | #include "php_spl.h"
|
| 30 | +#include "spl_array_arginfo.h" |
30 | 31 | #include "spl_functions.h"
|
31 | 32 | #include "spl_engine.h"
|
32 | 33 | #include "spl_iterators.h"
|
@@ -780,6 +781,10 @@ SPL_METHOD(Array, getArrayCopy)
|
780 | 781 | zval *object = ZEND_THIS;
|
781 | 782 | spl_array_object *intern = Z_SPLARRAY_P(object);
|
782 | 783 |
|
| 784 | + if (zend_parse_parameters_none() == FAILURE) { |
| 785 | + RETURN_THROWS(); |
| 786 | + } |
| 787 | + |
783 | 788 | RETURN_ARR(zend_array_dup(spl_array_get_hash_table(intern)));
|
784 | 789 | } /* }}} */
|
785 | 790 |
|
@@ -1196,7 +1201,7 @@ SPL_METHOD(Array, __construct)
|
1196 | 1201 | return; /* nothing to do */
|
1197 | 1202 | }
|
1198 | 1203 |
|
1199 |
| - if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|lC", &array, &ar_flags, &ce_get_iterator) == FAILURE) { |
| 1204 | + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|zlC", &array, &ar_flags, &ce_get_iterator) == FAILURE) { |
1200 | 1205 | RETURN_THROWS();
|
1201 | 1206 | }
|
1202 | 1207 |
|
@@ -1225,7 +1230,7 @@ SPL_METHOD(ArrayIterator, __construct)
|
1225 | 1230 | return; /* nothing to do */
|
1226 | 1231 | }
|
1227 | 1232 |
|
1228 |
| - if (zend_parse_parameters(ZEND_NUM_ARGS(), "z|l", &array, &ar_flags) == FAILURE) { |
| 1233 | + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|zl", &array, &ar_flags) == FAILURE) { |
1229 | 1234 | RETURN_THROWS();
|
1230 | 1235 | }
|
1231 | 1236 |
|
@@ -1673,7 +1678,7 @@ SPL_METHOD(Array, serialize)
|
1673 | 1678 | smart_str buf = {0};
|
1674 | 1679 |
|
1675 | 1680 | if (zend_parse_parameters_none() == FAILURE) {
|
1676 |
| - return; |
| 1681 | + RETURN_THROWS(); |
1677 | 1682 | }
|
1678 | 1683 |
|
1679 | 1684 | PHP_VAR_SERIALIZE_INIT(var_hash);
|
@@ -1702,11 +1707,7 @@ SPL_METHOD(Array, serialize)
|
1702 | 1707 | /* done */
|
1703 | 1708 | PHP_VAR_SERIALIZE_DESTROY(var_hash);
|
1704 | 1709 |
|
1705 |
| - if (buf.s) { |
1706 |
| - RETURN_NEW_STR(buf.s); |
1707 |
| - } |
1708 |
| - |
1709 |
| - RETURN_NULL(); |
| 1710 | + RETURN_NEW_STR(buf.s); |
1710 | 1711 | } /* }}} */
|
1711 | 1712 |
|
1712 | 1713 | /* {{{ proto void ArrayObject::unserialize(string serialized)
|
@@ -1892,122 +1893,69 @@ SPL_METHOD(Array, __unserialize)
|
1892 | 1893 | }
|
1893 | 1894 | /* }}} */
|
1894 | 1895 |
|
1895 |
| -/* {{{ arginfo and function table */ |
1896 |
| -ZEND_BEGIN_ARG_INFO_EX(arginfo_array___construct, 0, 0, 0) |
1897 |
| - ZEND_ARG_INFO(0, input) |
1898 |
| - ZEND_ARG_INFO(0, flags) |
1899 |
| - ZEND_ARG_INFO(0, iterator_class) |
1900 |
| -ZEND_END_ARG_INFO() |
1901 |
| - |
1902 |
| -/* ArrayIterator::__construct and ArrayObject::__construct have different signatures */ |
1903 |
| -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_iterator___construct, 0, 0, 0) |
1904 |
| - ZEND_ARG_INFO(0, array) |
1905 |
| - ZEND_ARG_INFO(0, flags) |
1906 |
| -ZEND_END_ARG_INFO() |
1907 |
| - |
1908 |
| -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetGet, 0, 0, 1) |
1909 |
| - ZEND_ARG_INFO(0, index) |
1910 |
| -ZEND_END_ARG_INFO() |
1911 |
| - |
1912 |
| -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetSet, 0, 0, 2) |
1913 |
| - ZEND_ARG_INFO(0, index) |
1914 |
| - ZEND_ARG_INFO(0, newval) |
1915 |
| -ZEND_END_ARG_INFO() |
1916 |
| - |
1917 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_append, 0) |
1918 |
| - ZEND_ARG_INFO(0, value) |
1919 |
| -ZEND_END_ARG_INFO() |
1920 |
| - |
1921 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_seek, 0) |
1922 |
| - ZEND_ARG_INFO(0, position) |
1923 |
| -ZEND_END_ARG_INFO() |
1924 |
| - |
1925 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_exchangeArray, 0) |
1926 |
| - ZEND_ARG_INFO(0, input) |
1927 |
| -ZEND_END_ARG_INFO() |
1928 |
| - |
1929 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_setFlags, 0) |
1930 |
| - ZEND_ARG_INFO(0, flags) |
1931 |
| -ZEND_END_ARG_INFO() |
1932 |
| - |
1933 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_setIteratorClass, 0) |
1934 |
| - ZEND_ARG_INFO(0, iteratorClass) |
1935 |
| -ZEND_END_ARG_INFO() |
1936 |
| - |
1937 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_uXsort, 0) |
1938 |
| - ZEND_ARG_INFO(0, cmp_function) |
1939 |
| -ZEND_END_ARG_INFO(); |
1940 |
| - |
1941 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_unserialize, 0) |
1942 |
| - ZEND_ARG_INFO(0, serialized) |
1943 |
| -ZEND_END_ARG_INFO(); |
1944 |
| - |
1945 |
| -ZEND_BEGIN_ARG_INFO(arginfo_array_void, 0) |
1946 |
| -ZEND_END_ARG_INFO() |
1947 |
| - |
1948 | 1896 | static const zend_function_entry spl_funcs_ArrayObject[] = {
|
1949 |
| - SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC) |
1950 |
| - SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1951 |
| - SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1952 |
| - SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) |
1953 |
| - SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1954 |
| - SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) |
1955 |
| - SPL_ME(Array, getArrayCopy, arginfo_array_void, ZEND_ACC_PUBLIC) |
1956 |
| - SPL_ME(Array, count, arginfo_array_void, ZEND_ACC_PUBLIC) |
1957 |
| - SPL_ME(Array, getFlags, arginfo_array_void, ZEND_ACC_PUBLIC) |
1958 |
| - SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) |
1959 |
| - SPL_ME(Array, asort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1960 |
| - SPL_ME(Array, ksort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1961 |
| - SPL_ME(Array, uasort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1962 |
| - SPL_ME(Array, uksort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1963 |
| - SPL_ME(Array, natsort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1964 |
| - SPL_ME(Array, natcasesort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1965 |
| - SPL_ME(Array, unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1966 |
| - SPL_ME(Array, serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
1967 |
| - SPL_ME(Array, __unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1968 |
| - SPL_ME(Array, __serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1897 | + SPL_ME(Array, __construct, arginfo_class_ArrayObject___construct, ZEND_ACC_PUBLIC) |
| 1898 | + SPL_ME(Array, offsetExists, arginfo_class_ArrayObject_offsetExists, ZEND_ACC_PUBLIC) |
| 1899 | + SPL_ME(Array, offsetGet, arginfo_class_ArrayObject_offsetGet, ZEND_ACC_PUBLIC) |
| 1900 | + SPL_ME(Array, offsetSet, arginfo_class_ArrayObject_offsetSet, ZEND_ACC_PUBLIC) |
| 1901 | + SPL_ME(Array, offsetUnset, arginfo_class_ArrayObject_offsetUnset, ZEND_ACC_PUBLIC) |
| 1902 | + SPL_ME(Array, append, arginfo_class_ArrayObject_append, ZEND_ACC_PUBLIC) |
| 1903 | + SPL_ME(Array, getArrayCopy, arginfo_class_ArrayObject_getArrayCopy, ZEND_ACC_PUBLIC) |
| 1904 | + SPL_ME(Array, count, arginfo_class_ArrayObject_count, ZEND_ACC_PUBLIC) |
| 1905 | + SPL_ME(Array, getFlags, arginfo_class_ArrayObject_getFlags, ZEND_ACC_PUBLIC) |
| 1906 | + SPL_ME(Array, setFlags, arginfo_class_ArrayObject_setFlags, ZEND_ACC_PUBLIC) |
| 1907 | + SPL_ME(Array, asort, arginfo_class_ArrayObject_asort, ZEND_ACC_PUBLIC) |
| 1908 | + SPL_ME(Array, ksort, arginfo_class_ArrayObject_ksort, ZEND_ACC_PUBLIC) |
| 1909 | + SPL_ME(Array, uasort, arginfo_class_ArrayObject_uasort, ZEND_ACC_PUBLIC) |
| 1910 | + SPL_ME(Array, uksort, arginfo_class_ArrayObject_uksort, ZEND_ACC_PUBLIC) |
| 1911 | + SPL_ME(Array, natsort, arginfo_class_ArrayObject_natsort, ZEND_ACC_PUBLIC) |
| 1912 | + SPL_ME(Array, natcasesort, arginfo_class_ArrayObject_natcasesort, ZEND_ACC_PUBLIC) |
| 1913 | + SPL_ME(Array, unserialize, arginfo_class_ArrayObject_unserialize, ZEND_ACC_PUBLIC) |
| 1914 | + SPL_ME(Array, serialize, arginfo_class_ArrayObject_serialize, ZEND_ACC_PUBLIC) |
| 1915 | + SPL_ME(Array, __unserialize, arginfo_class_ArrayObject___unserialize, ZEND_ACC_PUBLIC) |
| 1916 | + SPL_ME(Array, __serialize, arginfo_class_ArrayObject___serialize, ZEND_ACC_PUBLIC) |
1969 | 1917 | /* ArrayObject specific */
|
1970 |
| - SPL_ME(Array, getIterator, arginfo_array_void, ZEND_ACC_PUBLIC) |
1971 |
| - SPL_ME(Array, exchangeArray, arginfo_array_exchangeArray, ZEND_ACC_PUBLIC) |
1972 |
| - SPL_ME(Array, setIteratorClass, arginfo_array_setIteratorClass, ZEND_ACC_PUBLIC) |
1973 |
| - SPL_ME(Array, getIteratorClass, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1918 | + SPL_ME(Array, getIterator, arginfo_class_ArrayObject_getIterator, ZEND_ACC_PUBLIC) |
| 1919 | + SPL_ME(Array, exchangeArray, arginfo_class_ArrayObject_exchangeArray, ZEND_ACC_PUBLIC) |
| 1920 | + SPL_ME(Array, setIteratorClass, arginfo_class_ArrayObject_setIteratorClass, ZEND_ACC_PUBLIC) |
| 1921 | + SPL_ME(Array, getIteratorClass, arginfo_class_ArrayObject_getIteratorClass, ZEND_ACC_PUBLIC) |
1974 | 1922 | PHP_FE_END
|
1975 | 1923 | };
|
1976 | 1924 |
|
1977 | 1925 | static const zend_function_entry spl_funcs_ArrayIterator[] = {
|
1978 |
| - SPL_ME(ArrayIterator, __construct, arginfo_array_iterator___construct, ZEND_ACC_PUBLIC) |
1979 |
| - SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1980 |
| - SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1981 |
| - SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) |
1982 |
| - SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) |
1983 |
| - SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) |
1984 |
| - SPL_ME(Array, getArrayCopy, arginfo_array_void, ZEND_ACC_PUBLIC) |
1985 |
| - SPL_ME(Array, count, arginfo_array_void, ZEND_ACC_PUBLIC) |
1986 |
| - SPL_ME(Array, getFlags, arginfo_array_void, ZEND_ACC_PUBLIC) |
1987 |
| - SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) |
1988 |
| - SPL_ME(Array, asort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1989 |
| - SPL_ME(Array, ksort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1990 |
| - SPL_ME(Array, uasort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1991 |
| - SPL_ME(Array, uksort, arginfo_array_uXsort, ZEND_ACC_PUBLIC) |
1992 |
| - SPL_ME(Array, natsort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1993 |
| - SPL_ME(Array, natcasesort, arginfo_array_void, ZEND_ACC_PUBLIC) |
1994 |
| - SPL_ME(Array, unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1995 |
| - SPL_ME(Array, serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
1996 |
| - SPL_ME(Array, __unserialize, arginfo_array_unserialize, ZEND_ACC_PUBLIC) |
1997 |
| - SPL_ME(Array, __serialize, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1926 | + SPL_ME(ArrayIterator, __construct, arginfo_class_ArrayIterator___construct, ZEND_ACC_PUBLIC) |
| 1927 | + SPL_ME(Array, offsetExists, arginfo_class_ArrayIterator_offsetExists, ZEND_ACC_PUBLIC) |
| 1928 | + SPL_ME(Array, offsetGet, arginfo_class_ArrayIterator_offsetGet, ZEND_ACC_PUBLIC) |
| 1929 | + SPL_ME(Array, offsetSet, arginfo_class_ArrayIterator_offsetSet, ZEND_ACC_PUBLIC) |
| 1930 | + SPL_ME(Array, offsetUnset, arginfo_class_ArrayIterator_offsetUnset, ZEND_ACC_PUBLIC) |
| 1931 | + SPL_ME(Array, append, arginfo_class_ArrayIterator_append, ZEND_ACC_PUBLIC) |
| 1932 | + SPL_ME(Array, getArrayCopy, arginfo_class_ArrayIterator_getArrayCopy, ZEND_ACC_PUBLIC) |
| 1933 | + SPL_ME(Array, count, arginfo_class_ArrayIterator_count, ZEND_ACC_PUBLIC) |
| 1934 | + SPL_ME(Array, getFlags, arginfo_class_ArrayIterator_getFlags, ZEND_ACC_PUBLIC) |
| 1935 | + SPL_ME(Array, setFlags, arginfo_class_ArrayIterator_setFlags, ZEND_ACC_PUBLIC) |
| 1936 | + SPL_ME(Array, asort, arginfo_class_ArrayIterator_asort, ZEND_ACC_PUBLIC) |
| 1937 | + SPL_ME(Array, ksort, arginfo_class_ArrayIterator_ksort, ZEND_ACC_PUBLIC) |
| 1938 | + SPL_ME(Array, uasort, arginfo_class_ArrayIterator_uasort, ZEND_ACC_PUBLIC) |
| 1939 | + SPL_ME(Array, uksort, arginfo_class_ArrayIterator_uksort, ZEND_ACC_PUBLIC) |
| 1940 | + SPL_ME(Array, natsort, arginfo_class_ArrayIterator_natsort, ZEND_ACC_PUBLIC) |
| 1941 | + SPL_ME(Array, natcasesort, arginfo_class_ArrayIterator_natcasesort, ZEND_ACC_PUBLIC) |
| 1942 | + SPL_ME(Array, unserialize, arginfo_class_ArrayIterator_unserialize, ZEND_ACC_PUBLIC) |
| 1943 | + SPL_ME(Array, serialize, arginfo_class_ArrayIterator_serialize, ZEND_ACC_PUBLIC) |
| 1944 | + SPL_ME(Array, __unserialize, arginfo_class_ArrayIterator___unserialize, ZEND_ACC_PUBLIC) |
| 1945 | + SPL_ME(Array, __serialize, arginfo_class_ArrayIterator___serialize, ZEND_ACC_PUBLIC) |
1998 | 1946 | /* ArrayIterator specific */
|
1999 |
| - SPL_ME(Array, rewind, arginfo_array_void, ZEND_ACC_PUBLIC) |
2000 |
| - SPL_ME(Array, current, arginfo_array_void, ZEND_ACC_PUBLIC) |
2001 |
| - SPL_ME(Array, key, arginfo_array_void, ZEND_ACC_PUBLIC) |
2002 |
| - SPL_ME(Array, next, arginfo_array_void, ZEND_ACC_PUBLIC) |
2003 |
| - SPL_ME(Array, valid, arginfo_array_void, ZEND_ACC_PUBLIC) |
2004 |
| - SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC) |
| 1947 | + SPL_ME(Array, rewind, arginfo_class_ArrayIterator_rewind, ZEND_ACC_PUBLIC) |
| 1948 | + SPL_ME(Array, current, arginfo_class_ArrayIterator_current, ZEND_ACC_PUBLIC) |
| 1949 | + SPL_ME(Array, key, arginfo_class_ArrayIterator_key, ZEND_ACC_PUBLIC) |
| 1950 | + SPL_ME(Array, next, arginfo_class_ArrayIterator_next, ZEND_ACC_PUBLIC) |
| 1951 | + SPL_ME(Array, valid, arginfo_class_ArrayIterator_valid, ZEND_ACC_PUBLIC) |
| 1952 | + SPL_ME(Array, seek, arginfo_class_ArrayIterator_seek, ZEND_ACC_PUBLIC) |
2005 | 1953 | PHP_FE_END
|
2006 | 1954 | };
|
2007 | 1955 |
|
2008 | 1956 | static const zend_function_entry spl_funcs_RecursiveArrayIterator[] = {
|
2009 |
| - SPL_ME(Array, hasChildren, arginfo_array_void, ZEND_ACC_PUBLIC) |
2010 |
| - SPL_ME(Array, getChildren, arginfo_array_void, ZEND_ACC_PUBLIC) |
| 1957 | + SPL_ME(Array, hasChildren, arginfo_class_RecursiveArrayIterator_hasChildren, ZEND_ACC_PUBLIC) |
| 1958 | + SPL_ME(Array, getChildren, arginfo_class_RecursiveArrayIterator_getChildren, ZEND_ACC_PUBLIC) |
2011 | 1959 | PHP_FE_END
|
2012 | 1960 | };
|
2013 | 1961 | /* }}} */
|
|
0 commit comments