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

Reply via email to