From 9ec6f74d6b2ef88584d3d8431d982badfefbc61b Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Tue, 5 May 2026 15:00:58 -0400 Subject: [PATCH] Time::utc handle nil microseconds argument --- src/time_object.cpp | 2 +- test/natalie/time_test.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/time_object.cpp b/src/time_object.cpp index 930fe6eba8..2cc7b0f349 100644 --- a/src/time_object.cpp +++ b/src/time_object.cpp @@ -101,7 +101,7 @@ TimeObject *TimeObject::utc(Env *env, Value year, Optional month, Optiona int seconds = timegm(&result->m_time); result->m_mode = Mode::UTC; result->m_integer = seconds; - if (subsec_arg) { + if (subsec_arg && !subsec_arg.value().is_nil()) { auto subsec = subsec_arg.value(); if (subsec.is_integer()) { auto integer = subsec.integer(); diff --git a/test/natalie/time_test.rb b/test/natalie/time_test.rb index eedf33a272..ee488d573d 100644 --- a/test/natalie/time_test.rb +++ b/test/natalie/time_test.rb @@ -126,6 +126,14 @@ def time t.nsec.should == 1 end end + + context 'with a nil microseconds argument' do + it 'returns a time with no subseconds' do + t = Time.utc(1970, 1, 1, 0, 0, 0, nil) + t.should be_an_instance_of(Time) + t.nsec.should == 0 + end + end end describe '#+' do