about summary refs log tree commit diff
path: root/src/search
Commit message (Collapse)AuthorAgeFilesLines
* fix tsearch, tfind, tdelete to handle null pointer inputSzabolcs Nagy2015-12-081-0/+6
| | | | | POSIX specifies the behaviour for null rootp input, but it was not implemented correctly.
* tsearch code cleanupSzabolcs Nagy2015-12-081-24/+28
| | | | | changed the insertion method to simplify the recursion logic and reduce code size a bit.
* fix tsearch to avoid crash on oomSzabolcs Nagy2015-12-081-1/+1
| | | | | malloc failure was not properly propagated in the insertion method which led to null pointer dereference.
* fix tdelete to properly balance the treeSzabolcs Nagy2015-12-081-5/+14
| | | | | | | the tsearch data structure is an avl tree, but it did not implement the deletion operation correctly so the tree could become unbalanced. reported by Ed Schouten.
* remove struct elem entirely from hsearch.csin2014-04-021-29/+22
| | | | | | | | | | | | | 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.
* implement hcreate_r, hdestroy_r and hsearch_rsin2014-04-021-30/+73
| | | | | | | | | | 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.
* POSIX conformance fix: define struct entry in search.hSzabolcs Nagy2013-10-291-8/+8
|
* make tdestroy allow null function pointer if no destructor is neededRich Felker2013-08-021-1/+1
| | | | this change is to align with a change in the glibc interface.
* fix aliasing violations in tsearch functionsRich Felker2013-08-021-2/+10
| | | | | | | 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.
* search: add comments to tsearch_avl.cnsz2012-05-131-0/+6
|
* search: add tdestroy (gnu extension)nsz2012-05-131-0/+21
|
* XSI search.h API implementation by Szabolcs NagyRich Felker2011-06-254-0/+352