diff options
author | Lu Wang <coolwanglu@gmail.com> | 2013-11-27 00:27:02 +0800 |
---|---|---|
committer | Lu Wang <coolwanglu@gmail.com> | 2013-11-27 00:27:02 +0800 |
commit | 31ae7a3a6ea6841f3eb93b23af1de328e2805e84 (patch) | |
tree | a8884c3a66aa9a5d18b6a48bc41c4194a4d086a1 | |
parent | d91ec3a7b38200705e11662d9d90b2c3a5f26cbd (diff) |
fix rand_r; add rand_r in test_rand
-rw-r--r-- | src/library.js | 6 | ||||
-rw-r--r-- | tests/test_core.py | 18 |
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): |