mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-23 02:44:56 +00:00
Portdefs cleanup, use snprintf from SDL and not sprintf (Which can cause memory overwrites).
Use bsearch implementation from WINCE port. svn-id: r34382
This commit is contained in:
parent
a625e6cfae
commit
5756308cec
@ -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;
|
||||
|
@ -35,9 +35,6 @@
|
||||
#include <e32std.h>
|
||||
#include <math.h>
|
||||
|
||||
//#define DISABLE_SCALERS // we only need 1x
|
||||
//#define DISABLE_HQ_SCALERS
|
||||
|
||||
#if defined(USE_TREMOR) && !defined(USE_VORBIS)
|
||||
#define USE_VORBIS // make sure this one is defined together with USE_TREMOR!
|
||||
#endif
|
||||
@ -107,29 +104,19 @@
|
||||
*/
|
||||
|
||||
#elif defined (__WINS__) // WINS
|
||||
extern "C" int SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...);
|
||||
extern "C" int SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap);
|
||||
#define snprintf(buf,len,args...) SDL_snprintf(buf,len,args)
|
||||
#define vsnprintf(buf,len,format,valist) SDL_vsnprintf(buf,len,format,valist)
|
||||
|
||||
// let's just blatantly ignore this for now and just get it to work :P but does n't work from the debug function
|
||||
int inline scumm_snprintf (char *str, unsigned long /*n*/, char const *fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vsprintf(str, fmt, args);
|
||||
va_end(args);
|
||||
return strlen(str);
|
||||
}
|
||||
|
||||
int inline scumm_vsnprintf (char *str, unsigned long /*n*/, char const *fmt, va_list valist) {
|
||||
vsprintf(str, fmt, valist);
|
||||
return strlen(str);
|
||||
}
|
||||
|
||||
#define snprintf scumm_snprintf
|
||||
#define vsnprintf scumm_vsnprintf
|
||||
void* symbian_malloc (size_t _size);
|
||||
|
||||
#define malloc symbian_malloc
|
||||
#else // GCCE and the rest
|
||||
#define snprintf(buf,len,args...) sprintf(buf,args)
|
||||
#define vsnprintf(buf,len,format,valist) vsprintf(buf,format,valist)
|
||||
extern "C" int SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...);
|
||||
extern "C" int SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap);
|
||||
#define snprintf(buf,len,args...) SDL_snprintf(buf,len,args)
|
||||
#define vsnprintf(buf,len,format,valist) SDL_vsnprintf(buf,len,format,valist)
|
||||
#endif
|
||||
|
||||
#ifndef __WINS__
|
||||
@ -138,19 +125,10 @@
|
||||
#define USE_ARM_COSTUME_ASM
|
||||
#define USE_ARM_SOUND_ASM
|
||||
#endif
|
||||
// somehow nobody has this function...
|
||||
#define hypot(a, b) sqrt((a)*(a) + (b)*(b))
|
||||
|
||||
// Symbian bsearch implementation is flawed
|
||||
void inline *scumm_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) {
|
||||
size_t i;
|
||||
|
||||
for (i=0; i < nmemb; i++)
|
||||
if (compar(key, (void *)((size_t)base + size * i)) == 0)
|
||||
return (void *)((size_t)base + size * i);
|
||||
return NULL;
|
||||
}
|
||||
#define bsearch scumm_bsearch
|
||||
void *scumm_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
|
||||
#define bsearch scumm_bsearch
|
||||
|
||||
// we cannot include SymbianOS.h everywhere, but this works too (functions code is in SymbianOS.cpp)
|
||||
namespace Symbian {
|
||||
|
Loading…
x
Reference in New Issue
Block a user