basic/inc/pch/precompiled_sb.hxx | 1 + basic/source/runtime/methods.cxx | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-)
New commits: commit df466d79cb126667cc9d5c108367bfa4f5ce76c8 Author: Thomas Arnhold <tho...@arnhold.org> Date: Tue May 13 22:42:49 2014 +0200 fdo#70474: Random number generation weak with Rnd in BASIC Just reuse the rng functionality. This improves the randomness. Initialize seed with system time if no argument for RANDOMIZE is given. As the help text states: "If Number is omitted, the generator uses the current value of the system timer". Change-Id: I5fa46e8344b2402dff66a8db2449d43e2ca27d6d Reviewed-on: https://gerrit.libreoffice.org/9349 Reviewed-by: Thomas Arnhold <tho...@arnhold.org> Tested-by: Thomas Arnhold <tho...@arnhold.org> diff --git a/basic/inc/pch/precompiled_sb.hxx b/basic/inc/pch/precompiled_sb.hxx index 4c0ba1b..a7cd16b 100644 --- a/basic/inc/pch/precompiled_sb.hxx +++ b/basic/inc/pch/precompiled_sb.hxx @@ -29,6 +29,7 @@ #include <com/sun/star/uno/XInterface.hpp> #include <com/sun/star/util/DateTime.hpp> #include <comphelper/processfactory.hxx> +#include <comphelper/random.hxx> #include <comphelper/string.hxx> #include <cstddef> #include <ctype.h> diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index fe2f00d..2e3c375 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -45,6 +45,7 @@ #include "errobject.hxx" #include <comphelper/processfactory.hxx> +#include <comphelper/random.hxx> #include <comphelper/string.hxx> #include <com/sun/star/uno/Sequence.hxx> @@ -3521,16 +3522,16 @@ RTLFUNC(Randomize) { StarBASIC::Error( SbERR_BAD_ARGUMENT ); } - sal_Int16 nSeed; + int nSeed; if( rPar.Count() == 2 ) { - nSeed = (sal_Int16)rPar.Get(1)->GetInteger(); + nSeed = (int)rPar.Get(1)->GetInteger(); } else { - nSeed = (sal_Int16)rand(); + nSeed = (int)time(NULL); } - srand( nSeed ); + comphelper::rng::seed( nSeed ); } RTLFUNC(Rnd) @@ -3544,9 +3545,7 @@ RTLFUNC(Rnd) } else { - double nRand = (double)rand(); - nRand = ( nRand / ((double)RAND_MAX + 1.0)); - rPar.Get(0)->PutDouble( nRand ); + rPar.Get(0)->PutDouble( comphelper::rng::uniform() ); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits