aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLu Wang <coolwanglu@gmail.com>2013-11-27 00:27:02 +0800
committerLu Wang <coolwanglu@gmail.com>2013-11-27 00:27:02 +0800
commit31ae7a3a6ea6841f3eb93b23af1de328e2805e84 (patch)
treea8884c3a66aa9a5d18b6a48bc41c4194a4d086a1
parentd91ec3a7b38200705e11662d9d90b2c3a5f26cbd (diff)
fix rand_r; add rand_r in test_rand
-rw-r--r--src/library.js6
-rw-r--r--tests/test_core.py18
2 files changed, 20 insertions, 4 deletions
diff --git a/src/library.js b/src/library.js
index d55f9c0c..077a2ebb 100644
--- a/src/library.js
+++ b/src/library.js
@@ -3451,8 +3451,8 @@ LibraryManager.library = {
{{{ makeSetValue('___rand_seed', 0, 'seed', 'i32') }}}
},
rand_r__deps: ['__rand_seed'],
- rand_r: function(seed) {
- var val = {{{ makeGetValue('___rand_seed', 0, 'i32') }}};
+ rand_r: function(seedp) {
+ var val = {{{ makeGetValue('seedp', 0, 'i32') }}};
// calculate val * 31010991 + 0x676e6177
// i32 multiplication will be rounded by javascript
var valh = val >> 16;
@@ -3464,7 +3464,7 @@ LibraryManager.library = {
val = (((valh * cl + vall * ch) << 16) + vall * cl + 0x676e6177) & 0x7fffffff;
- {{{ makeSetValue('___rand_seed', 0, 'val', 'i32') }}}
+ {{{ makeSetValue('seedp', 0, 'val', 'i32') }}}
return val;
},
rand__deps: ['rand_r'],
diff --git a/tests/test_core.py b/tests/test_core.py
index 099da365..4a3f57e8 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -6583,6 +6583,11 @@ int main()
srand(0xdeadbeef);
for(int i = 0; i < 10; ++i)
printf("%d\n", rand());
+
+ unsigned int seed = 0xdeadbeef;
+ for(int i = 0; i < 10; ++i)
+ printf("%d\n", rand_r(&seed));
+
return 0;
}
'''
@@ -6595,7 +6600,18 @@ int main()
983994184
1982845871
1210574360
-1479617503'''
+1479617503
+2073540312
+730128159
+1365227432
+1337224527
+792390264
+1952655743
+983994184
+1982845871
+1210574360
+1479617503
+'''
self.do_run(src, expected)
def test_strtod(self):