diff options
author | Lars Persson | 2008-09-06 10:30:05 +0000 |
---|---|---|
committer | Lars Persson | 2008-09-06 10:30:05 +0000 |
commit | 5756308ceca9454bcb043850d25af54eb0d48550 (patch) | |
tree | 615170b15ef1a33ba59b890a0515ba67d0ac8164 /backends/platform/symbian/src/SymbianOS.cpp | |
parent | a625e6cfae6f4209a08ac460f4da012bf20a500f (diff) | |
download | scummvm-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.cpp | 20 |
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; |