Commit Graph

358 Commits

Author SHA1 Message Date
Dmitry Stogov
21da8af578 Removed the old hack that was originally developed to support constants in array indeces, and isn't needed anymore after the Bob's patch. 2014-05-19 01:20:56 +04:00
Dmitry Stogov
d07c1941ec Use new hash iteration API and avoid old zend_hash_update_current_key() hack 2014-05-19 00:50:00 +04:00
Tjerk Meesters
e7b50a8ee9 Convert to unpacked before deleting elements
Return FAILURE immediately if a string index removal is attempted.

Moved condition higher up
2014-05-13 11:58:28 +08:00
Nikita Popov
b30c7fe263 Port JSON 2014-05-05 01:00:59 +02:00
Nikita Popov
69b5ee61d0 Fixed bug #67169: []= after_array_splice incorrect
This fixes a regression I introduced in beta 1.
2014-05-02 12:49:51 +02:00
Dmitry Stogov
b1ff152782 Reimplement strtr() 2014-04-24 19:14:29 +04:00
Nikita Popov
c98d373eb6 Fix strict array comparison
Fixes Symfony test failures
2014-04-23 20:34:45 +02:00
Dmitry Stogov
72c287bd23 Combine HashTable.flags and HashTable.nApplyCount into single 32-bit word 2014-04-21 18:25:34 +04:00
Dmitry Stogov
050d7e38ad Cleanup (1-st round) 2014-04-15 15:40:40 +04:00
Nikita Popov
ad2ef3d97e Add only_integer_keys option to zend_hash_reindex
This allows to either do a full reindex, or only reindex the integer
keys.
2014-04-09 12:31:21 +02:00
Nikita Popov
22d3eb3117 Add zend_hash_splice
This implements the original functionality of php_splice, but
as an in-place operation, thus avoiding copying the HT.

This is much faster (~10x) if the splice removes a small portion
of the array and doesn't insert many elements.
2014-04-09 12:31:21 +02:00
Nikita Popov
1aa8719e32 Add zend_hash_reindex
The implementation differs from the original in array.c in that it
rehashes the hashtable in the same loop. This is approximately two
times faster (not counting the rare case of a purely associative
array).
2014-04-09 12:31:21 +02:00
Dmitry Stogov
3d17219cd8 Refactored zend_hash_* iteration API zend_hash_fove_forward_ex(ht, pos) and family require second argument to be real pointer.
&(ht)->nInternalPointer should be passed instead of NULL.
zend_hash_update_current_key() may work only with internal pointer.
2014-04-07 23:14:17 +04:00
Dmitry Stogov
3167b49ce9 Allocate HashTable->arData and HashTable->arHash at once 2014-04-07 18:22:03 +04:00
Dmitry Stogov
3485b11499 "incremental" hash bucket initialization 2014-04-07 13:31:44 +04:00
Dmitry Stogov
76cc99fe60 Refactored ZVAL flags usage to simplify various checks (e.g. Z_REFCOUNTED(), candidate for GC, etc) 2014-04-03 15:26:23 +04:00
Dmitry Stogov
d8099d0468 Changed data layout to allow more efficient operations 2014-04-02 14:34:44 +04:00
Dmitry Stogov
60961bba3d Avoid useless memset() 2014-04-01 23:56:45 +04:00
Dmitry Stogov
042c937f69 Use STR_COPY() instead of STR_DUP() where possible 2014-04-01 17:10:15 +04:00
Dmitry Stogov
887189ca31 Refactored IS_INDIRECT usage for CV and object properties to support HashTable resizing 2014-03-26 18:07:31 +04:00
Anatol Belski
9d4001f1c8 fix C89 compat 2014-03-22 10:44:01 +01:00
Nikita Popov
f331ed1414 Revert "Add helper function for updating bucket contents"
Reverting this for now, because it would require further changes
thanks to the zend signals tsrms-but-only-sometimes awesomeness.
2014-03-21 01:32:49 +01:00
Nikita Popov
4e7e301dda Rename+move zend_hash_apply_deleter and reuse it
The interruption handling was normalized to wrap the entire deletion
operation (instead of leaving out the destructor call and/or the
deallocation) per the recommendation of somebody (don't remember who)
familiar with zend signals.

There is an always-inlined variant of the function for use in
the main deletion function, to ensure there is no performance
impact.
2014-03-21 00:14:52 +01:00
Nikita Popov
4efa58dd59 Make zend_hash_apply_deleter() void, to allow reuse
Also remove lies in the comment above the function. apply_deleter
is not safe against modification, if the modification involves
removing the next bucket.

Also modified the implementation of zend_hash_graceful_destroy()
to be fully graceful (the reverse variant already was).
2014-03-21 00:14:51 +01:00
Nikita Popov
c3a317117a Add helper function for updating bucket contents 2014-03-21 00:14:46 +01:00
Nikita Popov
994fcfcff9 Remove unnecessary check
In case of an update the key already existed, so the next free
element can not change.
2014-03-20 22:58:10 +01:00
Dmitry Stogov
62c448ab8b Fixed serialize/unserialize problems 2014-03-17 17:23:27 +04:00
Dmitry Stogov
51494f252f Don't include trailing zero into hash caclculation 2014-03-14 15:35:57 +04:00
Dmitry Stogov
3e4c22b499 Fixed possible HashTable modification in its destructor 2014-03-06 16:53:13 +04:00
Dmitry Stogov
e0f6bae56b Passing symbol_table into user error handlers 2014-03-04 14:17:17 +04:00
Xinchen Hui
a52659bc25 zend_hash_del didn't check the PACKED flag 2014-02-19 19:27:42 +08:00
Dmitry Stogov
5de7115679 Use better data structures (incomplete; able to run bench.php) 2014-02-18 16:27:38 +04:00
Dmitry Stogov
be82a07776 Use better data structures (incomplete) 2014-02-12 18:08:11 +04:00
Dmitry Stogov
f4cfaf36e2 Use better data structures (incomplete) 2014-02-10 10:04:30 +04:00
Xinchen Hui
c081ce628f Bump year 2014-01-03 11:08:10 +08:00
Xinchen Hui
47c9027772 Bump year 2014-01-03 11:06:16 +08:00
Dmitry Stogov
6c2a806820 Avoid interned hash key duplication and hash key length recaclulation 2013-11-29 00:57:49 +04:00
Dmitry Stogov
5d25762646 Removed unused "pHashFunction" argument in _zend_hash_init() and family (must be 99% source compatible) 2013-11-28 18:40:46 +04:00
Dmitry Stogov
b63b81815f Some rare deprecated cases replaced by ZEND_ASSERT() (some extensions might need to be fixed) 2013-11-28 17:02:01 +04:00
Dmitry Stogov
aa427a10d4 Removed duplicated hash function implementation (100% source compatible) 2013-11-28 17:01:10 +04:00
Stanislav Malyshev
02457554a3 Merge branch 'PHP-5.5'
* PHP-5.5:
  backward compatibility
  HASH_KEY_NON_EXISTANT fix
2013-07-21 20:10:31 -07:00
Veres Lajos
4749457a49 HASH_KEY_NON_EXISTANT fix 2013-07-21 20:09:53 -07:00
Nikita Popov
42729c1baf Merge branch 'PHP-5.5' 2013-06-17 23:49:08 +02:00
Nikita Popov
86434be946 Fix bug #65051: count() off by one inside unset()
nNumOfElements was incremented after the pDestructor code, so any
code in the dtor would get a wrong number of elements.

Right now the bucket deletion code is replicated in four places,
it should probably be moved off into one function (or rather,
zend_hash_apply_deleter should be used everywhere). The codes are
subtly different though in that the HANDLE_UNBLOCK_INTERRUPTIONS()
happens in different places. In particular it seems odd that in
some cases interruptions stay blocked during the destructor call.
2013-06-17 23:44:13 +02:00
Nikita Popov
ae91084067 Remove unnecessary NULL checks from zend_hash
Our memory allocation functions (including the persistent ones)
are infallible, so no need to check for NULL.
2013-06-17 18:51:59 +02:00
Nikita Popov
1f34ccbe34 Fix bug #64555: foreach no longer copies keys if they are interned 2013-04-03 20:29:19 +02:00
Nikita Popov
fcc6611de9 Add support for non-scalar Iterator keys in foreach
RFC: https://wiki.php.net/rfc/foreach-non-scalar-keys
2013-03-12 17:27:31 +01:00
Xinchen Hui
a666285bc2 Happy New Year 2013-01-01 16:37:09 +08:00
Felipe Pena
8775a37559 - Year++ 2012-01-01 13:15:04 +00:00
Dmitry Stogov
dc18f8427c Fixed icorrect key length after updating constant index 2011-12-01 13:58:29 +00:00
Dmitry Stogov
e43ff1359e Fixed ZE specific compile warnings (Bug #55629) 2011-09-13 13:29:35 +00:00
Pierre Joye
710d46f38e - WS 2011-09-06 06:34:36 +00:00
Pierrick Charron
7f203d4385 Fix typo 2011-08-08 11:30:56 +00:00
Rasmus Lerdorf
1ac9192d46 Fix missing va_end() found by Coverity 2011-08-05 22:18:42 +00:00
Dmitry Stogov
8ff0701e8d Fixed bug #50816 (Using class constants in array definition fails). 2011-08-01 11:21:23 +00:00
Felipe Pena
5ca0f69921 - Fix ZTS build 2011-06-02 22:54:14 +00:00
Ilia Alshanetsky
939875133a Zend Signal Handling (see RFC: https://wiki.php.net/rfc/zendsignals)
This needs to go into 5.4 as well, but will wait for Pierre to review win32 situation

# Patch by Lucas Nealan, Arnaud Le Blanc, Brian Shire & Ilia Alshanetsky
2011-06-02 21:16:50 +00:00
Dmitry Stogov
50ce16deff Fixed bug #54268 (Double free when destroy_zend_class fails) 2011-04-15 12:43:20 +00:00
Dmitry Stogov
8fe3ea75cb Changed initialization order to workaround against crashes after memory overflow 2011-04-15 09:59:42 +00:00
Felipe Pena
0203cc3d44 - Year++ 2011-01-01 02:17:06 +00:00
Johannes Schlüter
1e1e70dc55 - Don't be silent on bailout 2010-09-14 14:26:37 +00:00
Dmitry Stogov
25d6aee4fb Removed redundant check 2010-07-07 11:44:27 +00:00
Felipe Pena
e232da026b - Replaced 'zend_hash_find' to 'zend_hash_quick_find' on zend_hash_compare() function 2010-05-03 16:36:04 +00:00
Dmitry Stogov
dd5c478be6 Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed. 2010-04-20 11:05:54 +00:00
Dmitry Stogov
ea53dc5af6 Added an optimization which saves memory and emalloc/efree calls for empty HashTables 2010-04-20 10:49:22 +00:00
Sebastian Bergmann
d2281d1dff sed -i "s#1998-2009#1998-2010#g" **/*.c **/*.h **/*.php 2010-01-05 20:46:53 +00:00
Matt Wilmas
dca18b68d1 MFH: Fixed bug #47836 (array operator [] inconsistency when the array has PHP_INT_MAX index value)
Also simplified related array_push() test
2009-06-07 19:28:15 +00:00
Sebastian Bergmann
08659c2dcd MFH: Bump copyright year, 3 of 3. 2008-12-31 11:15:49 +00:00
Felipe Pena
cf7384aa40 - MFH: Constness (Added const qualifier to several function parameters) 2008-08-12 17:20:25 +00:00
Antony Dovgal
3c018ceb75 fix WS 2008-08-07 11:51:54 +00:00
Dmitry Stogov
c1e5b1345d Fixed bug #45742 (Wrong class array inpretetion using constant indexes) 2008-08-07 11:45:35 +00:00
Dmitry Stogov
37a769353f Fixed bug #44100 (Inconsistent handling of static array declarations with duplicate keys). 2008-08-01 14:22:03 +00:00
Felipe Pena
0fbe6a0c14 - MFH: Added TSRMLS_DC to apply_func_args_t and zend_hash_apply_with_arguments. 2008-07-24 19:52:24 +00:00
Sebastian Bergmann
d1dded8751 MFH: Bump copyright year, 2 of 2. 2007-12-31 07:17:19 +00:00
Dmitry Stogov
6c810b0d4c Improved memory usage by movig constants to read only memory. (Dmitry, Pierre) 2007-09-27 18:00:48 +00:00
Dmitry Stogov
4035a8ebc0 Fixed bug #41372 (Internal pointer of source array resets during array copying)
Fixed bug #37715 (array pointers resetting on copy)
2007-07-24 18:28:39 +00:00
Dmitry Stogov
149dd625be Special case for last iteration 2007-02-21 14:11:00 +00:00
Antony Dovgal
d2c5721f41 MFH: catch overflow right away 2007-01-20 23:10:02 +00:00
Dmitry Stogov
e470e22e20 - Fixed bug #35106 (nested foreach fails when array variable has a reference).
- Fixed bug #36214 (__get method works properly only when conditional operator is used).
- Fixed bug #39449 (Overloaded array properties do not work correctly).
- Fixed bug #39990 (Cannot "foreach" over overloaded properties).
2007-01-10 15:58:08 +00:00
Sebastian Bergmann
4223aa4d5e MFH: Bump year. 2007-01-01 09:36:18 +00:00
Dmitry Stogov
cc895444b1 HashTable copying optimization (Matt Wilmas) 2006-11-08 16:02:03 +00:00
Marcus Boerger
da8b00a5e4 - MFH: Fixed bug #39320 2006-11-03 19:02:16 +00:00
Dmitry Stogov
c42b3bf689 Fixed bug #38315 (Constructing in the destructor causes weird behaviour) 2006-08-24 09:42:35 +00:00
Dmitry Stogov
6624682dff MFH:
- Allowed storing NULL pointers in HashTable
- Optimized zend_hash_reverse_apply()
2006-04-07 10:06:21 +00:00
Antony Dovgal
a3b941642c init variables 2006-02-06 20:37:11 +00:00
Zeev Suraski
b73349dbe4 Fix possibility of a wrong element being deleted by zend_hash_del()
Thanks Stefan!
2006-02-01 01:01:05 +00:00
Andi Gutmans
61e93ccfe8 - Update copyright notices to 2006 2006-01-04 23:53:05 +00:00
foobar
916815b779 Bump up the year 2005-08-03 13:30:58 +00:00
Dmitry Stogov
d9c1a380ad Fixed bug #28072 (static array with some constant keys will be incorrectly ordered). 2005-07-07 15:16:57 +00:00
Antony Dovgal
a32c1f9eee fix bug #33382 (array_reverse() fails after *sort())
no need to MFH - the bug existed only in HEAD
2005-06-17 10:50:15 +00:00
foobar
9a020fce63 ws 2005-04-25 08:21:15 +00:00
Dmitry Stogov
c78ec1615a Fixed call to estrndup() with invalid length 2005-04-25 06:13:57 +00:00
Marcus Boerger
dcf007c6da - Increase performance of *sort() and some internal sort operations.
# This patch increases the performance of small arrays/hashes by up to ~15%
# The performance increase during the performance talk :-)
2004-07-29 19:18:46 +00:00
Andi Gutmans
e5cfb1d05c - Better stability during premature shutdown of request startup 2004-07-10 07:46:17 +00:00
foobar
ccfc46b0aa - Happy new year and PHP 5 for rest of the files too..
# Should the LICENSE and Zend/LICENSE dates be updated too?
2004-01-08 17:33:29 +00:00
Sascha Schumann
dcfb7638bc improve a number of zend_debug format strings 2003-08-29 07:34:37 +00:00
Zeev Suraski
0dba58c373 Improve tracking 2003-08-18 21:17:26 +00:00
Zeev Suraski
d2971e506c Remove bogus patch - the number of elements is unrelated 2003-08-12 06:21:02 +00:00
Marcus Boerger
f77f977d0e Bugfix 21918 2003-08-11 20:14:25 +00:00
Andi Gutmans
7055fda013 - Fix logic. It was the wrong way around. 2003-07-31 05:08:59 +00:00
Andi Gutmans
8264eedc48 - Fix problem with hash when updating same bucket with data of different
sizes one after another.
- Fix number of arguments to read_dimension.
2003-07-30 19:47:39 +00:00
Zeev Suraski
e89977f9d9 Go back to ZE1-like code 2003-07-23 08:56:34 +00:00
Zeev Suraski
cf90932a05 Improve infrastructure of numeric handling of elements in symbol tables.
When you want to work with a symbol table, and you don't know whether you
have a numeric ("string that looks like a number") or a string element in
your hands, use zend_symtable_*() functions, in place of zend_hash_*()
functions.
2003-07-22 16:06:07 +00:00
Marcus Boerger
184118d9a9 Make it a macro 2003-07-20 12:23:46 +00:00
Marcus Boerger
9556c6c27e This is meant to be used in for(;has_more;next)
# Probably the name of such functions should be eol (End-Of-List).
2003-07-19 20:04:51 +00:00
Marcus Boerger
892c1fbbe7 Add missing function to ease implementations 2003-07-19 14:19:04 +00:00
Marcus Boerger
4eb6392519 ecalloc doesn't return NULL 2003-06-14 11:32:30 +00:00
James Cox
f68c7ff249 updating license information in the headers. 2003-06-10 20:04:29 +00:00
Sterling Hughes
ae9106521a move HANDLE_NUMERIC() from the hash table implementation upstream to the
places that actually need to use it.
2003-05-23 15:11:15 +00:00
Zeev Suraski
45c12359a9 Fix prototype (may have caused stack corruption) 2003-02-06 00:14:49 +00:00
Zeev Suraski
376d63170b Add quick_exists() 2003-02-05 13:19:59 +00:00
Zeev Suraski
471947b188 Reimplement PPP properties 2003-02-04 12:12:34 +00:00
foobar
333406bdc2 - Added some missing CVS $Id$ tags, headers and footers. 2003-02-01 01:49:15 +00:00
Sebastian Bergmann
2c5d4b8c23 Bump year. 2002-12-31 15:59:15 +00:00
Andi Gutmans
55e127a6d5 - Commit fix for bug #19566 (I think it's by Marcus :) 2002-11-15 14:25:44 +00:00
Ilia Alshanetsky
c6d60713cb Revert of previous patch. 2002-11-05 18:22:02 +00:00
Ilia Alshanetsky
0506fa5e6a If ordered is not set a random compiler assigned value of *p2 would be used,
this patch fixes the problem by initializing *p2 to NULL.
2002-11-04 17:26:44 +00:00
Zeev Suraski
91b0d03346 Add tracking for hashtable allocation 2002-09-17 14:04:37 +00:00
Zeev Suraski
88fd5f3f5d MFZE1 2002-08-17 16:07:26 +00:00
Harald Radi
99c90db11a make win32 debug output more verbose 2002-08-07 14:47:42 +00:00
Stanislav Malyshev
0e7c1f4609 MFZE1 2002-08-01 16:07:19 +00:00
Andi Gutmans
b291dfad3d - Fix WS. 2002-07-23 19:29:02 +00:00
Harald Radi
51e797f1e3 some type cleanup work 2002-04-23 18:06:54 +00:00
Sebastian Bergmann
bf5bb84277 MFZE1: make sure the resource-list is always consistent during shutdown (Thies). 2002-04-19 16:53:36 +00:00
Sebastian Bergmann
2697ce689d MFZE1: Fix imbalance bug (Zeev). 2002-04-19 16:43:27 +00:00
Sebastian Bergmann
62dc854bb0 Happy New Year. 2002-01-06 15:21:36 +00:00
Sebastian Bergmann
d863d52a5d Update headers. 2001-12-11 15:16:21 +00:00
Sebastian Bergmann
43c7615c51 MFZE1 2001-10-04 14:18:52 +00:00
Sebastian Bergmann
3bdddb4910 MFZE1 2001-09-19 10:25:04 +00:00
Zeev Suraski
9b3df86e8d MFZE1 2001-08-20 14:58:52 +00:00
Zeev Suraski
4f6c95d17a Whitespace 2001-08-11 15:56:40 +00:00
Zeev Suraski
c14baeece3 Avoid going over huge lists of functions, classes and constants.
Special thanks to the guys from the MS lab for the profiling tools :)
2001-08-02 07:00:43 +00:00
Zeev Suraski
7deb44e36d Some cleanup 2001-08-02 06:16:20 +00:00
Zeev Suraski
3aa5674a84 TSRMLS fixes 2001-08-02 05:25:29 +00:00
Zeev Suraski
d76cf1da18 More TSRMLS_FETCH work 2001-07-31 04:53:54 +00:00
Zeev Suraski
8ce8324e59 More TSRMLS_FETCH annihilation 2001-07-30 04:54:16 +00:00
Zeev Suraski
660a09c6da Fix compile warning 2001-07-21 14:18:53 +00:00
Andi Gutmans
6bd084cb0a - Remove unused code 2001-07-17 16:10:15 +00:00
Zeev Suraski
563aacdb66 Fix bug #6239 2001-07-15 18:57:43 +00:00
Zeev Suraski
f63367bf16 layout 2001-07-13 12:08:32 +00:00
Thies C. Arntzen
7b7e72d1d2 the resource-lists are now destroyed backwards. this will make sure that
resources get destroyed in the opposite order they were created and thereby
db-cursors will always be released before their corresponding connection etc.
this sould not break anything!
2001-07-13 12:05:47 +00:00
Andi Gutmans
b98acd61f1 - Move inline_zend_hash_func() to header file 2001-07-11 16:16:08 +00:00
Andi Gutmans
2f8fa8cf21 - Merge faster hash implementation.
- The hash function parameter in hash_init(...) is not used anymore.
- It should be removed but it is "to be decided" if we want to do that now
- or in a major version as it means changing MANY places and third party
- modules might stop working.
2001-07-10 20:31:42 +00:00
Sascha Schumann
ba8af2515e Fix segfault when using zend_hash_add_empty_element 2001-05-19 14:53:55 +00:00
Zeev Suraski
755207a1e6 Implement zend_hash_add_empty_element() using the existing infrastructure 2001-05-16 17:22:01 +00:00
Sascha Schumann
bb472e7069 Initialize empty pDataPtr to a pseudo value to prevent a pefree on
pData.
2001-05-14 10:49:17 +00:00
Sascha Schumann
3efa08aaa8 Some extensions don't associate any data with hash entries,
except the key.  Prior to this change, a separate chunk of memory
was allocated in that case to store exactly zero bytes (plus
memory manager overhead).  We treat that case similar to the
pointer case, but don't copy any data at all (because the pointer
is usually the NULL pointer).
2001-05-11 19:32:01 +00:00
Zeev Suraski
4e71bbed0a include limits.h if available 2001-04-28 20:21:42 +00:00
Andi Gutmans
acd56b0891 - More whitespace fixes while I'm at it. 2001-04-27 18:53:25 +00:00
Andi Gutmans
d2c9e8074c - Update copyright year 2001-02-26 05:43:27 +00:00
Zeev Suraski
36eaad252f Allow get_current_key() not to return the key itself, instead of a duplicate 2000-12-22 12:49:51 +00:00
Zeev Suraski
0fcce4a77a @* Fixed a possible crash in get_class_methods() (Zeev) 2000-12-22 12:08:04 +00:00
Sascha Schumann
fb87cc8c8e INIT_DATA/UPDATE_DATA assumed that pData elements of the size of a void
pointer would actually be aligned like a void pointer. This lead
to bus errors on architectures which don't allow unaligned 32-bit accesses.
2000-12-06 21:24:10 +00:00
Andi Gutmans
e9887156cf Don't use 'new' symbol 2000-10-11 19:11:48 +00:00
Zeev Suraski
9aa38aad45 Add zend_hash_merge_ex(), for selective merging 2000-10-11 16:22:40 +00:00
Andi Gutmans
c4fd954b8a - Another has optimization/fix like the hash_copy one from earlier on 2000-09-28 23:21:08 +00:00
Stanislav Malyshev
56c474cf48 Make hash_copy call copy constructor on a real copy, not on a temp 2000-09-28 15:17:50 +00:00
Zeev Suraski
a650dd8a19 This is probably the oldest bug in PHP :)
Luckily it's unlikely we're ever actually bitten by this bug.
2000-07-18 20:08:06 +00:00
Zeev Suraski
1263932a0d Disable the hash_apply() protection on hashes that persist across requests - it's unsafe
because we may be aborted at any point
2000-07-11 14:27:31 +00:00
Zeev Suraski
38cdb8e7b7 Avoid crashing with recursive applies - limit apply nest level to 3 (I'm not aware of a place
in which applying recursively on the same hash makes sense with more than one nest level, but
3 should be enough)
2000-06-17 14:11:57 +00:00
Zeev Suraski
bfac4633a5 - Support unordered hash comparisons
- Make == perform an unordered comparison with arrays/objects, and === perform an ordered comparison
2000-06-04 21:59:49 +00:00
Zeev Suraski
dae76aa1b5 Support comparisons of arrays (with arrays) and objects (with objects) 2000-06-03 10:34:19 +00:00
Zeev Suraski
0b7a9cea88 - Fix Win32 compilation (Use winsock2.h from now on)
- Add lambda() support
2000-06-03 01:49:49 +00:00
Zeev Suraski
8ca13c97c2 Change zend_hash_get_current_key_ex() to also return the string length 2000-05-02 17:52:31 +00:00
Andi Gutmans
6db18997bb - Nuke hash_*_ptr functions 2000-03-24 11:12:30 +00:00
Andrei Zmievski
ee286febe7 Make zend_hash_move_forward()/zenv_hash_move_backwards() a little smarter. 2000-03-15 16:25:59 +00:00
Andrei Zmievski
a32c54bdbb Introduced a way to traverse hashes through external pointers. 2000-03-13 15:25:18 +00:00
Zeev Suraski
5e55e47f7f It's official now... 2000-03-06 05:26:39 +00:00
Zeev Suraski
0ac9536d99 (c) patch 2000-02-19 22:46:42 +00:00
Zeev Suraski
ceba50b6ed - Fix a nasty bug in the hash, introduced in the recent migration to macros
- Make array_init() and friends trackable
2000-02-19 19:21:45 +00:00
Andi Gutmans
e578fad099 - Save a function call one very hash_add 2000-02-13 13:31:29 +00:00
Andi Gutmans
bb302a755c - Make startup a bit faster by changing some hash_update()'s and hash_add()'s
to hash_update_ptr()/hash_add_ptr()
2000-02-13 13:22:02 +00:00
Andi Gutmans
920b7b2841 - Fix a couple of potential bugs where we were using emalloc/efree instead
of pemalloc/pefree.
- Fix a bug were we potentially would be freeing the key by mistake
2000-02-13 12:45:36 +00:00
Andrei Zmievski
94be61fde5 Made a couple of typedefs for zend_hash_apply_*() calls. 2000-02-11 21:12:49 +00:00
Zeev Suraski
9f51f154aa - Stop passing list/plist to internal functions
- Add a typedef for the pCopyConstructor function pointer
- Minor hacks
2000-02-05 15:11:24 +00:00
Thies C. Arntzen
d6afe4bac7 took out zend_hash_pointer_update() & zend_hash_pointer_index_update_or_next_insert() - i really prefer link-errors instead of runtime-errors, don't you? 2000-02-01 10:40:05 +00:00
Zeev Suraski
c3677ca907 Add some order... 2000-01-20 14:26:31 +00:00
Zeev Suraski
92633067af Indentation fixes 2000-01-20 05:27:57 +00:00
Andi Gutmans
af2ef0830a - Optimize zend_hash_del a tiny bit. 2000-01-19 19:47:16 +00:00
Andi Gutmans
aa73f6b68f - Hopefully fix the hash problem. 2000-01-19 19:44:32 +00:00
Andi Gutmans
7271c050a3 - Hrm I'm not concentrating 2000-01-19 18:14:20 +00:00
Andi Gutmans
99783fe795 - Actually the destructor should run after the data is already detached
from the hash but before the bucket is freed.
2000-01-19 18:12:05 +00:00
Andi Gutmans
d3690efffe - Rollback hash_apply and friends. They assume now that hash_del is reentrant
as it first applies the destructor and only later nukes the bucket
2000-01-19 18:05:16 +00:00
Andi Gutmans
b7b97df93f - Run destructor before the hash structure is modified, thus, making
hash_del, reentrant (BLOCK_INTERRUPTIONS needs to be made a counter now).
2000-01-19 17:39:55 +00:00
Andi Gutmans
58fb1a3922 - Undo a bug we introduced. (Another one out there). 2000-01-19 17:31:33 +00:00
Thies C. Arntzen
bbe2172c38 use defines 2000-01-17 19:17:58 +00:00
Zeev Suraski
19d978d1c7 Get rid of the IsPointer functionality in the hash. 2000-01-17 18:45:46 +00:00
Zeev Suraski
a965dc5b40 - Fixes a newly introduced bug in the hash 2000-01-17 18:09:03 +00:00
Zeev Suraski
62114c1806 Destructors no longer return ints, the low level problem it was intended to solve is long gone now... 2000-01-17 17:33:37 +00:00
Zeev Suraski
ee08b81aab - Make zend_hash_apply() (and friends) reentrant and much, much quicker
- Introduce zend_hash_graceful_destroy(), which allows the destructor functions to
  use zend_hash_apply() and/or zend_hash_graceful_destroy()
- Switch to zend_hash_graceful_destroy() in the resource list shutdowns
2000-01-16 20:59:03 +00:00
Thies C. Arntzen
bd375505f7 make the ht->inconsistent stuff less ugly:) 2000-01-16 09:45:10 +00:00
Thies C. Arntzen
c93a189028 if ZEND_DEBUG mode is on we'll now see warnings when a HashTable is accessed
while it's inconsistent.

Zeev, Andi - you welcome to revert this patch if you don't like it - i find it
useful! accesssing inconsistent hashtables is one of the hardest things to track!
2000-01-15 13:40:17 +00:00
Andrei Zmievski
3964c92f8b Made zend_hash_rehash() callable from outside. 1999-11-04 21:02:35 +00:00
Andrei Zmievski
e956a266e2 *** empty log message *** 1999-10-15 20:37:53 +00:00
Andrei Zmievski
8864313c48 Modified zend_hash() to accept a pointer to sort function. 1999-10-11 21:30:23 +00:00
Stig S. Bakken
009025e00d * header file cleanup
* fixed --enable-thread-safety build for UNIX

I don't have a Win32 environment available, could someone please try
compiling on Win32 to see if I got all the header file stuff right there?
1999-09-06 16:14:08 +00:00
Andi Gutmans
746ce67b66 - Add hash_apply_with_arguments() 1999-08-25 19:02:13 +00:00
Andi Gutmans
741ca16711 - Fixed various inheritance problems & Andrey's leak 1999-07-28 17:59:55 +00:00
Zeev Suraski
8d1de13aef 0.91 update 1999-07-19 20:02:12 +00:00
Zeev Suraski
b5b1117760 License update 1999-07-16 14:58:16 +00:00