aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/symbian/src/SymbianOS.cpp
diff options
context:
space:
mode:
authorLars Persson2008-09-06 10:30:05 +0000
committerLars Persson2008-09-06 10:30:05 +0000
commit5756308ceca9454bcb043850d25af54eb0d48550 (patch)
tree615170b15ef1a33ba59b890a0515ba67d0ac8164 /backends/platform/symbian/src/SymbianOS.cpp
parenta625e6cfae6f4209a08ac460f4da012bf20a500f (diff)
downloadscummvm-rg350-5756308ceca9454bcb043850d25af54eb0d48550.tar.gz
scummvm-rg350-5756308ceca9454bcb043850d25af54eb0d48550.tar.bz2
scummvm-rg350-5756308ceca9454bcb043850d25af54eb0d48550.zip
Portdefs cleanup, use snprintf from SDL and not sprintf (Which can cause memory overwrites).
Use bsearch implementation from WINCE port. svn-id: r34382
Diffstat (limited to 'backends/platform/symbian/src/SymbianOS.cpp')
-rw-r--r--backends/platform/symbian/src/SymbianOS.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/backends/platform/symbian/src/SymbianOS.cpp b/backends/platform/symbian/src/SymbianOS.cpp
index 3ca6546276..5a5c681e2e 100644
--- a/backends/platform/symbian/src/SymbianOS.cpp
+++ b/backends/platform/symbian/src/SymbianOS.cpp
@@ -479,6 +479,26 @@ RFs& OSystem_SDL_Symbian::FsSession() {
return *_RFs;
}
+// Symbian bsearch implementation is flawed
+void* scumm_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) {
+ // Perform binary search
+ size_t lo = 0;
+ size_t hi = nmemb;
+ while (lo < hi) {
+ size_t mid = (lo + hi) / 2;
+ const void *p = ((const char *)base) + mid * size;
+ int tmp = (*compar)(key, p);
+ if (tmp < 0)
+ hi = mid;
+ else if (tmp > 0)
+ lo = mid + 1;
+ else
+ return (void *)p;
+ }
+
+ return NULL;
+}
+
FILE* symbian_fopen(const char* name, const char* mode) {
TSymbianFileEntry* fileEntry = new TSymbianFileEntry;
fileEntry->iInputPos = KErrNotFound;