diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 908c2f883..64587aaee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -212,7 +212,7 @@ jobs: if: failure() run: | sudo apt-get install -y gdb - for name in node_e2e_test suites_test; do + for name in node_e2e_test suites_test copier_test; do BIN=$(ls -t target/debug/deps/$name-* | grep -v '\.d$' | head -1) [ -n "$BIN" ] || continue xvfb-run -a gdb -batch -ex run -ex bt -- "$BIN" --nocapture || true diff --git a/crates/oaknode/src/nodes/timeformat.rs b/crates/oaknode/src/nodes/timeformat.rs index afc28daf7..1caaa139f 100644 --- a/crates/oaknode/src/nodes/timeformat.rs +++ b/crates/oaknode/src/nodes/timeformat.rs @@ -76,8 +76,10 @@ extern "C" { } #[cfg(target_os = "windows")] extern "C" { - fn localtime_s(result: *mut Tm, timep: *const i64) -> i32; - fn gmtime_s(result: *mut Tm, timep: *const i64) -> i32; + // UCRT exports the 64-bit-time variants; `localtime_s`/`gmtime_s` are + // header inlines on MinGW, not linkable symbols. + fn _localtime64_s(result: *mut Tm, timep: *const i64) -> i32; + fn _gmtime64_s(result: *mut Tm, timep: *const i64) -> i32; } /// Expand Qt date/time format tokens (`QDateTime::toString` syntax): @@ -306,9 +308,9 @@ impl NodeBehavior for TimeFormatNode { unsafe { let secs64 = secs as i64; if to_bool(&local_val) { - localtime_s(&mut tm, &secs64); + _localtime64_s(&mut tm, &secs64); } else { - gmtime_s(&mut tm, &secs64); + _gmtime64_s(&mut tm, &secs64); } }