]> granicus.if.org Git - php/log
php
10 years agocleanup
Dmitry Stogov [Mon, 2 Jun 2014 22:43:31 +0000 (02:43 +0400)]
cleanup

10 years agocleanup
Dmitry Stogov [Mon, 2 Jun 2014 20:36:31 +0000 (00:36 +0400)]
cleanup

10 years agoFixed merge
Xinchen Hui [Sun, 1 Jun 2014 15:14:31 +0000 (23:14 +0800)]
Fixed merge

10 years agoMerge branch 'master' into phpng
Xinchen Hui [Sun, 1 Jun 2014 14:29:41 +0000 (22:29 +0800)]
Merge branch 'master' into phpng

Conflicts:
ext/spl/spl_array.c
ext/spl/spl_directory.c
ext/standard/formatted_print.c

10 years agoMerge branch 'PHP-5.6'
Xinchen Hui [Sun, 1 Jun 2014 11:42:53 +0000 (19:42 +0800)]
Merge branch 'PHP-5.6'

10 years agoUpdate NEWs
Xinchen Hui [Sun, 1 Jun 2014 11:42:39 +0000 (19:42 +0800)]
Update NEWs

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Xinchen Hui [Sun, 1 Jun 2014 11:42:20 +0000 (19:42 +0800)]
Merge branch 'PHP-5.5' into PHP-5.6

10 years agoUpdate NEWs
Xinchen Hui [Sun, 1 Jun 2014 11:42:01 +0000 (19:42 +0800)]
Update NEWs

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Xinchen Hui [Sun, 1 Jun 2014 11:41:35 +0000 (19:41 +0800)]
Merge branch 'PHP-5.4' into PHP-5.5

10 years agoFixed bug #67359 (Segfault in recursiveDirectoryIterator)
Xinchen Hui [Sun, 1 Jun 2014 11:41:01 +0000 (19:41 +0800)]
Fixed bug #67359 (Segfault in recursiveDirectoryIterator)

10 years agoImproved conditions order
Dmitry Stogov [Fri, 30 May 2014 10:40:19 +0000 (14:40 +0400)]
Improved conditions order

10 years agoMerge branch 'phpng' of git.php.net:php-src into phpng
Dmitry Stogov [Fri, 30 May 2014 07:13:19 +0000 (11:13 +0400)]
Merge branch 'phpng' of git.php.net:php-src into phpng

* 'phpng' of git.php.net:php-src:
  typo
  Revert "Fix ArrayObject with immutable array"
  Fix ArrayObject with immutable array

10 years agoAvoid useless duplication of immutable arrays
Dmitry Stogov [Fri, 30 May 2014 07:12:24 +0000 (11:12 +0400)]
Avoid useless duplication of immutable arrays

10 years agoAvoid in-place modification
Dmitry Stogov [Fri, 30 May 2014 07:12:03 +0000 (11:12 +0400)]
Avoid in-place modification

10 years agotypo
Xinchen Hui [Fri, 30 May 2014 06:56:50 +0000 (14:56 +0800)]
typo

10 years agoRevert "Fix ArrayObject with immutable array"
Nikita Popov [Thu, 29 May 2014 19:49:54 +0000 (21:49 +0200)]
Revert "Fix ArrayObject with immutable array"

This reverts commit 9c85aa0489671e6cec43406161c558567e5b7336.

10 years agoFix ArrayObject with immutable array
Nikita Popov [Thu, 29 May 2014 19:19:49 +0000 (21:19 +0200)]
Fix ArrayObject with immutable array

10 years agoMerge branch 'PHP-5.6'
Adam Harvey [Thu, 29 May 2014 17:57:54 +0000 (17:57 +0000)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  Check for zero-length keys in spl_array_skip_protected and don't skip them.
  added CVEs in NEWS

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Adam Harvey [Thu, 29 May 2014 17:56:32 +0000 (17:56 +0000)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  Check for zero-length keys in spl_array_skip_protected and don't skip them.
  added CVEs in NEWS

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Adam Harvey [Thu, 29 May 2014 17:53:28 +0000 (17:53 +0000)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  Check for zero-length keys in spl_array_skip_protected and don't skip them.

10 years agoCheck for zero-length keys in spl_array_skip_protected and don't skip them.
Adam Harvey [Thu, 29 May 2014 17:49:32 +0000 (17:49 +0000)]
Check for zero-length keys in spl_array_skip_protected and don't skip them.

Fixes bug #67360 (Missing element after ArrayObject::getIterator).

10 years agoIntroduced immutable arrays. They don't need to be copyed and may be used directly...
Dmitry Stogov [Thu, 29 May 2014 14:21:56 +0000 (18:21 +0400)]
Introduced immutable arrays. They don't need to be copyed and may be used directly from SHM.

10 years agoFix length reset in JSON parser
Nikita Popov [Thu, 29 May 2014 10:53:32 +0000 (12:53 +0200)]
Fix length reset in JSON parser

10 years agoFix $http_response_header creation
Nikita Popov [Thu, 29 May 2014 10:51:03 +0000 (12:51 +0200)]
Fix $http_response_header creation

10 years agoImprove gdb ht and zval dumps
Nikita Popov [Thu, 29 May 2014 10:47:40 +0000 (12:47 +0200)]
Improve gdb ht and zval dumps

10 years agoImprove class constant fetch fix
Nikita Popov [Thu, 29 May 2014 09:17:33 +0000 (11:17 +0200)]
Improve class constant fetch fix

Dereference the cached constant for Test::TEST as well (and not just
self::TEST).

Also improve the phpt file to test this case as well - previously
this only manifested with opcache enabled, due to literal sharing.

Additionally the Z_TYPE_P != IS_REFERENCE assertion is now moved
into the TMP_VAR fetching code (as it applies to more than just
property assignments.)

10 years agoFix class constant fetching
Nikita Popov [Wed, 28 May 2014 22:02:13 +0000 (00:02 +0200)]
Fix class constant fetching

If a class is extended after the constant fetch has been cached
the cached value will be turned into a reference. On the next
fetch the polymorphic cache will return this reference, which
will be directly returned. The object assignment code then
dereferences this result and performs a shallow copy, which is
invalid for references. This subsequently leads to the constant
value being prematurely freed.

This is fixed by dereferencing the value returned from the
polymorphic cache. Furthermore the incorrect dereference from
in the object assignment code is replaced with an assertion that
we're dealing with a non-reference, so ensure that this kind of
problem cannot go unnoticed in the future.

10 years agoA few more fixes and improvements for gdbinit
Nikita Popov [Wed, 28 May 2014 20:43:53 +0000 (22:43 +0200)]
A few more fixes and improvements for gdbinit

10 years agoInitialize GC_TYPE_INFO for EG(symbol_table)
Nikita Popov [Wed, 28 May 2014 19:32:52 +0000 (21:32 +0200)]
Initialize GC_TYPE_INFO for EG(symbol_table)

10 years agoFixed conversion to phpng mistakes
Dmitry Stogov [Wed, 28 May 2014 19:04:50 +0000 (23:04 +0400)]
Fixed conversion to phpng mistakes

10 years agoUse zend_long_to_str in wddx
Nikita Popov [Wed, 28 May 2014 16:55:51 +0000 (18:55 +0200)]
Use zend_long_to_str in wddx

10 years agoUse zval_get_string in implode
Nikita Popov [Wed, 28 May 2014 16:45:00 +0000 (18:45 +0200)]
Use zval_get_string in implode

Also get rid of separate case for IS_OBJECT - this is already
handled by the default branch.

10 years agoUse smart_str_append_long in implode
Nikita Popov [Wed, 28 May 2014 16:39:41 +0000 (18:39 +0200)]
Use smart_str_append_long in implode

10 years agoUse zend_long_to_str in curl
Nikita Popov [Wed, 28 May 2014 16:34:35 +0000 (18:34 +0200)]
Use zend_long_to_str in curl

Also use STR_ADDREF instead of maintaining a numeric_key flag.

10 years agoUse zend_long_to_str in pcntl
Nikita Popov [Wed, 28 May 2014 16:26:11 +0000 (18:26 +0200)]
Use zend_long_to_str in pcntl

10 years agoClamb gdb string output at 256 chars
Nikita Popov [Tue, 27 May 2014 15:19:12 +0000 (17:19 +0200)]
Clamb gdb string output at 256 chars

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 14:45:01 +0000 (18:45 +0400)]
Use new zend_hash API

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 14:12:52 +0000 (18:12 +0400)]
Use new zend_hash API

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 13:49:31 +0000 (17:49 +0400)]
Use new zend_hash API

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 13:43:11 +0000 (17:43 +0400)]
Use new zend_hash API

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 13:30:05 +0000 (17:30 +0400)]
Use new zend_hash API

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 12:56:41 +0000 (16:56 +0400)]
Use new zend_hash API

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 10:09:42 +0000 (14:09 +0400)]
Use new zend_hash API

10 years agoUse extended iteration API to avoid in-place modification
Dmitry Stogov [Wed, 28 May 2014 09:00:33 +0000 (13:00 +0400)]
Use extended iteration API to avoid in-place modification

10 years agoadded CVEs in NEWS
Julien Pauli [Wed, 28 May 2014 08:59:57 +0000 (10:59 +0200)]
added CVEs in NEWS

10 years agoUse extended iteration API to avoid in-place modification
Dmitry Stogov [Wed, 28 May 2014 08:39:27 +0000 (12:39 +0400)]
Use extended iteration API to avoid in-place modification

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 08:34:08 +0000 (12:34 +0400)]
Use new zend_hash API

10 years agoAvoid in-place modification
Dmitry Stogov [Wed, 28 May 2014 08:15:36 +0000 (12:15 +0400)]
Avoid in-place modification

10 years agoUse new zend_hash API
Dmitry Stogov [Wed, 28 May 2014 08:15:16 +0000 (12:15 +0400)]
Use new zend_hash API

10 years agoAvoid in-place modification
Dmitry Stogov [Wed, 28 May 2014 06:15:15 +0000 (10:15 +0400)]
Avoid in-place modification

10 years agoReference counter in phpng may have a bit different meaning and must not be the same
Dmitry Stogov [Tue, 27 May 2014 22:16:21 +0000 (02:16 +0400)]
Reference counter in phpng may have a bit different meaning and must not be the same

10 years agoUse new zend_hash API
Dmitry Stogov [Tue, 27 May 2014 22:13:45 +0000 (02:13 +0400)]
Use new zend_hash API

10 years agoAvoid in-place conversion
Dmitry Stogov [Tue, 27 May 2014 21:29:37 +0000 (01:29 +0400)]
Avoid in-place conversion

10 years agoFixed refcounting
Dmitry Stogov [Tue, 27 May 2014 21:28:38 +0000 (01:28 +0400)]
Fixed refcounting

10 years agoMerge branch 'PHP-5.6'
Anatol Belski [Tue, 27 May 2014 20:40:17 +0000 (22:40 +0200)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  updated libmagic.patch for 5.6+
  updated libmagic.patch for 5.4+

10 years agoupdated libmagic.patch for 5.6+
Anatol Belski [Tue, 27 May 2014 20:39:54 +0000 (22:39 +0200)]
updated libmagic.patch for 5.6+

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Anatol Belski [Tue, 27 May 2014 20:38:30 +0000 (22:38 +0200)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  updated libmagic.patch for 5.4+

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Anatol Belski [Tue, 27 May 2014 20:38:02 +0000 (22:38 +0200)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  updated libmagic.patch for 5.4+

Conflicts:
ext/fileinfo/libmagic.patch

10 years agoupdated libmagic.patch for 5.4+
Anatol Belski [Tue, 27 May 2014 20:36:12 +0000 (22:36 +0200)]
updated libmagic.patch for 5.4+

10 years agoMerge branch 'PHP-5.6'
Stanislav Malyshev [Tue, 27 May 2014 19:12:22 +0000 (12:12 -0700)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  update NEWS
  Fix bug #67249: printf out-of-bounds read
  5.5.13 release date

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Stanislav Malyshev [Tue, 27 May 2014 19:11:07 +0000 (12:11 -0700)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  update NEWS
  Fix bug #67249: printf out-of-bounds read
  5.5.13 release date

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Stanislav Malyshev [Tue, 27 May 2014 19:10:03 +0000 (12:10 -0700)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  update NEWS
  Fix bug #67249: printf out-of-bounds read

10 years agoupdate NEWS
Stanislav Malyshev [Tue, 27 May 2014 18:26:24 +0000 (11:26 -0700)]
update NEWS

10 years agoFix bug #67249: printf out-of-bounds read
Stanislav Malyshev [Mon, 12 May 2014 01:44:14 +0000 (18:44 -0700)]
Fix bug #67249: printf out-of-bounds read

10 years ago5.5.13 release date
Julien Pauli [Tue, 27 May 2014 12:21:16 +0000 (14:21 +0200)]
5.5.13 release date

10 years agoEscape non-printable characters in the junit XML output
Matteo Beccati [Tue, 27 May 2014 09:54:34 +0000 (11:54 +0200)]
Escape non-printable characters in the junit XML output

XML doesn't allow most of the characters < 0x20 and binary output
breaks XML parsers. Such characters are not allowed as entities
either, so the generated entities are escaped in order to be printed
as text.

10 years agoMerge branch 'PHP-5.6'
Matteo Beccati [Tue, 27 May 2014 10:04:32 +0000 (12:04 +0200)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  Escape non-printable characters in the junit XML output

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Matteo Beccati [Tue, 27 May 2014 10:04:26 +0000 (12:04 +0200)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  Escape non-printable characters in the junit XML output

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Matteo Beccati [Tue, 27 May 2014 10:04:17 +0000 (12:04 +0200)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  Escape non-printable characters in the junit XML output

10 years agoEscape non-printable characters in the junit XML output
Matteo Beccati [Tue, 27 May 2014 09:54:34 +0000 (11:54 +0200)]
Escape non-printable characters in the junit XML output

XML doesn't allow most of the characters < 0x20 and binary output
breaks XML parsers. Such characters are not allowed as entities
either, so the generated entities are escaped in order to be printed
as text.

10 years agoMerge branch 'phpng' of https://git.php.net/repository/php-src into phpng
Xinchen Hui [Tue, 27 May 2014 09:48:47 +0000 (17:48 +0800)]
Merge branch 'phpng' of https://git.php.net/repository/php-src into phpng

10 years agoretval's initializing is already taken by zend_call_function
Xinchen Hui [Tue, 27 May 2014 09:46:01 +0000 (17:46 +0800)]
retval's initializing is already taken by zend_call_function

10 years agoFixed broken XML junit output due to escaping of CDATA sections
Matteo Beccati [Tue, 27 May 2014 09:04:48 +0000 (11:04 +0200)]
Fixed broken XML junit output due to escaping of CDATA sections

I've removed CDATA and used htmlspecialchars as the output might not be UTF-8 safe, as pointed out by ircmaxell in 26b37f1792dfaf9b0b30f81e492c8f68b9ece571

10 years agoMerge branch 'PHP-5.6'
Matteo Beccati [Tue, 27 May 2014 09:07:52 +0000 (11:07 +0200)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  Fixed broken XML junit output due to escaping of CDATA sections

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Matteo Beccati [Tue, 27 May 2014 09:07:32 +0000 (11:07 +0200)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  Fixed broken XML junit output due to escaping of CDATA sections

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Matteo Beccati [Tue, 27 May 2014 09:07:19 +0000 (11:07 +0200)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  Fixed broken XML junit output due to escaping of CDATA sections

10 years agoFixed broken XML junit output due to escaping of CDATA sections
Matteo Beccati [Tue, 27 May 2014 09:04:48 +0000 (11:04 +0200)]
Fixed broken XML junit output due to escaping of CDATA sections

I've removed CDATA and used htmlspecialchars as the output might not be UTF-8 safe, as pointed out by ircmaxell in 26b37f1792dfaf9b0b30f81e492c8f68b9ece571

10 years agoMerge branch 'PHP-5.6'
Stanislav Malyshev [Tue, 27 May 2014 05:18:32 +0000 (22:18 -0700)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  Fix #50444: PDO-ODBC changes for 64-bit

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Stanislav Malyshev [Tue, 27 May 2014 05:18:08 +0000 (22:18 -0700)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  Fix #50444: PDO-ODBC changes for 64-bit

10 years agoFix #50444: PDO-ODBC changes for 64-bit
Andrew Kehrig [Mon, 24 Feb 2014 17:01:58 +0000 (12:01 -0500)]
Fix #50444: PDO-ODBC changes for 64-bit

This bug is also referenced in
[#61777](https://bugs.php.net/bug.php?id=61777) and is still present in
the latest stable release of the 5.5 branch. I see two tickets exist for
this problem already, and I'm just submitting these changes via github
as a reminder that this is a serious problem for anyone using PDO_ODBC
on the x64 builds.

10 years agoFixed bug #47407
Xinchen Hui [Tue, 27 May 2014 03:48:25 +0000 (11:48 +0800)]
Fixed bug #47407

10 years agoMerge branch 'PHP-5.6'
Stanislav Malyshev [Tue, 27 May 2014 01:11:38 +0000 (18:11 -0700)]
Merge branch 'PHP-5.6'

* PHP-5.6:
  update NEWS
  backport this piece from 5.6, related to the #66307 fix
  Fixed bug #66307 Fileinfo crashes with powerpoint files
  Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation)
  Fix bug #67327: fileinfo: CDF infinite loop in nelements DoS
  fix my last commit with some locales
  fix my last commit with some locales

10 years agoupdate NEWS
Stanislav Malyshev [Tue, 27 May 2014 01:11:07 +0000 (18:11 -0700)]
update NEWS

10 years agoMerge branch 'PHP-5.5' into PHP-5.6
Stanislav Malyshev [Tue, 27 May 2014 01:06:58 +0000 (18:06 -0700)]
Merge branch 'PHP-5.5' into PHP-5.6

* PHP-5.5:
  backport this piece from 5.6, related to the #66307 fix
  Fixed bug #66307 Fileinfo crashes with powerpoint files
  Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation)
  Fix bug #67327: fileinfo: CDF infinite loop in nelements DoS
  fix my last commit with some locales

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Stanislav Malyshev [Tue, 27 May 2014 01:05:59 +0000 (18:05 -0700)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  backport this piece from 5.6, related to the #66307 fix
  Fixed bug #66307 Fileinfo crashes with powerpoint files

10 years agobackport this piece from 5.6, related to the #66307 fix
Anatol Belski [Thu, 24 Apr 2014 17:50:23 +0000 (19:50 +0200)]
backport this piece from 5.6, related to the #66307 fix

10 years agoFixed bug #66307 Fileinfo crashes with powerpoint files
Anatol Belski [Thu, 24 Apr 2014 17:30:34 +0000 (19:30 +0200)]
Fixed bug #66307 Fileinfo crashes with powerpoint files

10 years agoMerge branch 'PHP-5.4' into PHP-5.5
Stanislav Malyshev [Tue, 27 May 2014 01:03:01 +0000 (18:03 -0700)]
Merge branch 'PHP-5.4' into PHP-5.5

* PHP-5.4:
  Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation)
  Fix bug #67327: fileinfo: CDF infinite loop in nelements DoS

10 years agoFix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degrada...
Stanislav Malyshev [Tue, 27 May 2014 00:50:14 +0000 (17:50 -0700)]
Fix bug #67328 (fileinfo: numerous file_printf calls resulting in performance degradation)

Upstream patch: https://github.com/file/file/commit/b8acc83781d5a24cc5101e525d15efe0482c280d

10 years agoFix bug #67327: fileinfo: CDF infinite loop in nelements DoS
Stanislav Malyshev [Tue, 27 May 2014 00:42:18 +0000 (17:42 -0700)]
Fix bug #67327: fileinfo: CDF infinite loop in nelements DoS

Upstream fix: https://github.com/file/file/commit/f97486ef5dc3e8735440edc4fc8808c63e1a3ef0

10 years agoUse new zend_hash API
Dmitry Stogov [Mon, 26 May 2014 20:38:58 +0000 (00:38 +0400)]
Use new zend_hash API

10 years agofix my last commit with some locales
Nuno Lopes [Mon, 26 May 2014 19:09:10 +0000 (15:09 -0400)]
fix my last commit with some locales

10 years agofix my last commit with some locales
Nuno Lopes [Mon, 26 May 2014 19:08:28 +0000 (15:08 -0400)]
fix my last commit with some locales

10 years agofix my last commit with some locales
Nuno Lopes [Mon, 26 May 2014 19:08:00 +0000 (15:08 -0400)]
fix my last commit with some locales

10 years agoUse new zend_hash API
Dmitry Stogov [Mon, 26 May 2014 17:29:35 +0000 (21:29 +0400)]
Use new zend_hash API

10 years agoFix ** operator with references
Nikita Popov [Mon, 26 May 2014 16:17:55 +0000 (18:17 +0200)]
Fix ** operator with references

10 years agoAdd test for previous commit
Nikita Popov [Mon, 26 May 2014 16:13:16 +0000 (18:13 +0200)]
Add test for previous commit

10 years agoFix incdec of ref object properties
Nikita Popov [Mon, 26 May 2014 15:58:10 +0000 (17:58 +0200)]
Fix incdec of ref object properties

This fixes a number of infinite loops in the Symfony testsuite. It
took an obscene amount of time to track this down :/

10 years agoUse specialized functions instead of macros
Dmitry Stogov [Mon, 26 May 2014 13:16:16 +0000 (17:16 +0400)]
Use specialized functions instead of macros

10 years agoOptimize func_get_args() to build packed array
Dmitry Stogov [Mon, 26 May 2014 13:15:52 +0000 (17:15 +0400)]
Optimize func_get_args() to build packed array