diff --git a/doc/html/changelog.html b/doc/html/changelog.html index 62661602..bf7d7391 100644 --- a/doc/html/changelog.html +++ b/doc/html/changelog.html @@ -108,7 +108,7 @@
  • Fixed bug where sometimes an existing installation of flac could interfere with the build process (SF #1763690).
  • OS X fixes (SF #1786225).
  • MinGW fixes (SF #1684879).
  • -
  • Solaris 10 fixes (SF #1783225).
  • +
  • Solaris 10 fixes (SF #1783225 SF #1783630).
  • OS/2 fixes (SF #1771378 SF #1229495).
  • diff --git a/src/test_seeking/main.c b/src/test_seeking/main.c index 7c3a87f5..d5b54874 100644 --- a/src/test_seeking/main.c +++ b/src/test_seeking/main.c @@ -75,6 +75,21 @@ static FLAC__bool die_s_(const char *msg, const FLAC__StreamDecoder *decoder) return false; } +static unsigned local_rand_(void) +{ +#if !defined _MSC_VER && !defined __MINGW32__ +#define RNDFUNC random +#else +#define RNDFUNC rand +#endif + /* every RAND_MAX I've ever seen is 2^15-1 or 2^31-1, so a little hackery here: */ + if (RAND_MAX > 32767) + return RNDFUNC(); + else /* usually MSVC, some solaris */ + return (RNDFUNC()<<15) | RNDFUNC(); +#undef RNDFUNC +} + static off_t get_filesize_(const char *srcpath) { struct stat srcstat; @@ -298,12 +313,6 @@ static FLAC__bool seek_barrage(FLAC__bool is_ogg, const char *filename, off_t fi printf("file's total_samples is %I64u\n", decoder_client_data.total_samples); #else printf("file's total_samples is %llu\n", (unsigned long long)decoder_client_data.total_samples); -#endif -#if !defined _MSC_VER && !defined __MINGW32__ && !defined __EMX__ - if (decoder_client_data.total_samples > (FLAC__uint64)RAND_MAX) { - printf("ERROR: must be total_samples < %u\n", (unsigned)RAND_MAX); - return false; - } #endif n = (long int)decoder_client_data.total_samples; @@ -315,10 +324,6 @@ static FLAC__bool seek_barrage(FLAC__bool is_ogg, const char *filename, off_t fi if(n == 0) { /* 8 would imply no compression, 9 guarantees that we will get some samples off the end of the stream to test that case */ n = 9 * filesize / (decoder_client_data.channels * decoder_client_data.bits_per_sample); -#if !defined _MSC_VER && !defined __MINGW32__ - if(n > RAND_MAX) - n = RAND_MAX; -#endif } printf("Begin seek barrage, count=%u\n", count); @@ -339,12 +344,7 @@ static FLAC__bool seek_barrage(FLAC__bool is_ogg, const char *filename, off_t fi pos = n + (i-20); } else { -#if !defined _MSC_VER && !defined __MINGW32__ - pos = (FLAC__uint64)(random() % n); -#else - /* RAND_MAX is only 32767 in my MSVC */ - pos = (FLAC__uint64)((rand()<<15|rand()) % n); -#endif + pos = (FLAC__uint64)(local_rand_() % n); } #ifdef _MSC_VER