aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js
index a665fc8f..1971ab66 100644
--- a/src/library.js
+++ b/src/library.js
@@ -3201,6 +3201,29 @@ LibraryManager.library = {
throw 'ABORT: ' + code + ', at ' + (new Error().stack);
},
+ bsearch: function(key, base, num, size, compar) {
+ var cmp = FUNCTION_TABLE[compar];
+ var left = 0;
+ var right = num;
+ var mid, test, addr;
+
+ while (left < right) {
+ mid = (left + right) >>> 1;
+ addr = base + (mid * size);
+ test = cmp(key, addr);
+
+ if (test < 0) {
+ right = mid;
+ } else if (test > 0) {
+ left = mid + 1;
+ } else {
+ return addr;
+ }
+ }
+
+ return 0;
+ },
+
realloc__deps: ['memcpy'],
realloc: function(ptr, size) {
// Very simple, inefficient implementation - if you use a real malloc, best to use