Commit Graph

165 Commits

Author SHA1 Message Date
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
Andi Gutmans
44947bf563 Ok, so we do have to lock in there 1999-07-10 18:46:20 +00:00
Zeev Suraski
03d33b2f88 More locking work 1999-07-10 09:29:02 +00:00
Zeev Suraski
81d901b14d Step 1 in nuking the garbage collector:
- Change the hash destructor to return int
- Don't kill the bucket on hash_destroy if the destructor returns 0
1999-07-09 17:24:47 +00:00
Zeev Suraski
6abe9c34d9 * Support recoverable failure from erealloc()
* Fix the shutdown code on an unrecoverable erealloc() failure
1999-07-09 11:03:56 +00:00
Zeev Suraski
fd4650b540 Add zend_hash_get_current_key_type() 1999-06-07 22:49:33 +00:00
Zeev Suraski
bcc1337d8c Support overwrite mode in zend_hash_merge() 1999-05-29 18:59:58 +00:00
Zeev Suraski
b0bfa458b5 * Fix all hash checks that checked Bucket.arKey for NULL, when it was changed
to char[1], these checks should have been changed to Bucket.nKeyLength==0
* Support runtime declaration of functions.  I ended up changing the grammar
  to catch top level functions vs. nested functions.  The reason is simple -
  if we don't have functions properly declared at compile-time, function calls
  cannot be resolved at compile time, and have to be resolved at runtime, which
  ends up being much much slower (without the optimizer, that is).
  It's no biggy though, the grammar change isn't that bad.
1999-05-15 15:47:24 +00:00
Andi Gutmans
573b46022c Zend Library 1999-04-07 18:10:10 +00:00