mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-15 15:44:04 +00:00
Work around Windows test failure
I am uncertain why this works, but it does. Previously, `rtti_test` was failing due to non-zero data appearing in the `l_buggy` `Buggy_Struct`. The issue was caused by calling `runtime.default_random_generator` with a pointer to the state, somehow. The pointer could be on the stack or in the heap; it did not matter. I found two workarounds. - One is to move the RNG setup behind the call to `free_all`. - The other is to construct the random generator manually. Despite my digging and testing, I could find no reason as to why this works or what the fundamental issue was to begin with. If anyone comes upon this in the future with direct access to a Windows machine, I recommend stepping through the program with a debugger to investigate more deeply into why this happens.
This commit is contained in:
@@ -107,10 +107,14 @@ run_test_task :: proc(task: thread.Task) {
|
||||
options = Default_Test_Logger_Opts,
|
||||
}
|
||||
|
||||
free_all(context.temp_allocator)
|
||||
random_generator_state: runtime.Default_Random_State
|
||||
context.random_generator = {
|
||||
procedure = runtime.default_random_generator_proc,
|
||||
data = &random_generator_state,
|
||||
}
|
||||
rand.reset(data.t.seed)
|
||||
|
||||
random_generator_state := rand.create(data.t.seed)
|
||||
context.random_generator = rand.default_random_generator(&random_generator_state)
|
||||
free_all(context.temp_allocator)
|
||||
|
||||
data.it.p(&data.t)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user