Skip to content

Commit

Permalink
Check for zero time instant in TimeStamp.IsZero() (go-gitea#22171)
Browse files Browse the repository at this point in the history
- Backport of go-gitea#22171
  - Currently, the 'IsZero' function for 'TimeStamp' just checks if the unix time is zero, which is not the behavior of 'Time.IsZero()', but Gitea is using this method in accordance with the behavior of 'Time.IsZero()'.
  - Adds a new condition to check for the zero time instant.
  - Fixes a bug where non-expiring GPG keys where shown as they expired on Jan 01, 0001.
  - Related https://codeberg.org/Codeberg/Community/issues/791
  • Loading branch information
Gusted committed Dec 19, 2022
1 parent 72524ad commit d65d1ff
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions modules/timeutil/timestamp.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@ import (
// TimeStamp defines a timestamp
type TimeStamp int64

// mock is NOT concurrency-safe!!
var mock time.Time
var (
// mock is NOT concurrency-safe!!
mock time.Time

// Used for IsZero, to check if timestamp is the zero time instant.
timeZeroUnix = time.Time{}.Unix()
)

// Set sets the time to a mocked time.Time
func Set(now time.Time) {
Expand Down Expand Up @@ -103,5 +108,5 @@ func (ts TimeStamp) FormatDate() string {

// IsZero is zero time
func (ts TimeStamp) IsZero() bool {
return int64(ts) == 0
return int64(ts) == 0 || int64(ts) == timeZeroUnix
}

0 comments on commit d65d1ff

Please sign in to comment.