Commit Graph

8 Commits

Author SHA1 Message Date
sin 141d3b5c2a remove struct elem entirely from hsearch.c
There are two changes here, both of which make sense to be done in a
single patch:

- Remove hash from struct elem and compute it at runtime wherever
  necessary.
- Eliminate struct elem and use ENTRY directly.

As a result we cut down on the memory usage as each element in the
hash table now contains only an ENTRY not an ENTRY + size_t for the
hash. The downside is that the hash needs to be computed at runtime.
2014-04-02 18:49:24 -04:00
sin fe1ba7dbf1 implement hcreate_r, hdestroy_r and hsearch_r
the size and alignment of struct hsearch_data are matched to the glibc
definition for binary compatibility. the members of the structure do
not match, which should not be a problem as long as applications
correctly treat the structure as opaque.

unlike the glibc implementation, this version of hcreate_r does not
require the caller to zero-fill the structure before use.
2014-04-02 18:37:45 -04:00
Szabolcs Nagy b7d3210196 POSIX conformance fix: define struct entry in search.h 2013-10-29 20:25:11 +00:00
Rich Felker d3a98ff69a make tdestroy allow null function pointer if no destructor is needed
this change is to align with a change in the glibc interface.
2013-08-02 21:20:33 -04:00
Rich Felker 2d2da648f6 fix aliasing violations in tsearch functions
patch by nsz. the actual object the caller has storing the tree root
has type void *, so accessing it as struct node * is not valid.
instead, simply access the value, move it to a temporary of the
appropriate type and work from there, then move the result back.
2013-08-02 21:13:16 -04:00
nsz 6255c4c6a5 search: add comments to tsearch_avl.c 2012-05-13 01:50:53 +02:00
nsz d197d6421c search: add tdestroy (gnu extension) 2012-05-13 01:34:20 +02:00
Rich Felker febbd12d00 XSI search.h API implementation by Szabolcs Nagy 2011-06-25 18:18:57 -04:00