Skip to content

fmt chrono fails for clock minimum value #3282

Closed
@m5k8

Description

@m5k8

https://godbolt.org/z/GbbvMb3bE

    #include <iostream>
    #include <chrono>
    #include <fmt/format.h>
    #include <fmt/chrono.h>
    
    int main(void)
    {
        // OK:
        // auto t = std::chrono::system_clock::time_point::max();
        // failure:
        auto t = std::chrono::system_clock::time_point::min();
        fmt::print("{}\n", t);
        return 0;
    }

Result:

    terminate called after throwing an instance of 'fmt::v9::format_error'
      what():  duration is too small

Code in chrono.h:2113 explicitly checks for one second above min() and fails for value= min(). For max(), works OK. Until recently, it worked fine for min(). This commit: 240b728 added the offending code. I'm not sure about the intent of this test. I discovered the issue, because one of my tests started to fail. min() value seems to be legal value, albeit used not too often.

Activity

vitaut

vitaut commented on Jan 21, 2023

@vitaut
Contributor

This is essentially the same issue as discussed in #3261 (comment) except that UB has been replaced with a runtime error. A PR to allow time point values close to min would be welcome. cc @ShawnZhong

ardi-nugraha

ardi-nugraha commented on Nov 9, 2023

@ardi-nugraha

Hi, is this issue still open? I want to take it as my first contribution :)

vitaut

vitaut commented on Nov 9, 2023

@vitaut
Contributor

It is still open and contributions are welcome!

vitaut

vitaut commented on Feb 11, 2024

@vitaut
Contributor

Formatting min value works as of 8e42eef. Note that it is not particularly meaningful, we format whatever gmtime returns.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

      Participants

      @vitaut@ardi-nugraha@m5k8

      Issue actions

        fmt chrono fails for clock minimum value · Issue #3282 · fmtlib/fmt