musl - musl - an implementation of the standard library for Linux-based systems

index : musl
musl - an implementation of the standard library for Linux-based systems
summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2017年01月02日 17:30:40 -0500
committerRich Felker <dalias@aerifal.cx>2017年01月02日 17:30:40 -0500
commit61fb81e3959ecf0848eef8d2767bb80ae5d1a68e (patch)
tree8255caa07d9952fbe1f047df1d9a3dfaf2e3f16a /src
parent8fe1f2d79b275b7f7fb0d41c99e379357df63cd9 (diff)
downloadmusl-61fb81e3959ecf0848eef8d2767bb80ae5d1a68e.tar.gz
fix strftime %y for negative years
commit 583ea83541dcc6481c7a1bd1a9b485526bad84a1 fixed the case where tm_year is negative but the resulting year (offset by 1900) was still positive, which is always the case for time_t values that fit in 32 bits, but not for arbitrary inputs. based on an earlier patch by Julien Ramseier which was overlooked at the time the previous fix was applied.
Diffstat (limited to 'src')
-rw-r--r--src/time/strftime.c 4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/time/strftime.c b/src/time/strftime.c
index e103e02b..a3039204 100644
--- a/src/time/strftime.c
+++ b/src/time/strftime.c
@@ -166,8 +166,8 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *
item = T_FMT;
goto nl_strftime;
case 'y':
- val = tm->tm_year % 100;
- if (val<0) val += 100;
+ val = (tm->tm_year + 1900LL) % 100;
+ if (val < 0) val = -val;
goto number;
case 'Y':
val = tm->tm_year + 1900LL;
generated by cgit v1.2.1 (git 2.18.0) at 2025年09月17日 05:27:08 +0000

AltStyle によって変換されたページ (->オリジナル) /