Date: Tue, 4 Jul 2023 03:34:07 +0000 (UTC) From: Pedro Giffuni <pfg@freebsd.org> To: Warner Losh <imp@bsdimp.com> Cc: src-committers <src-committers@freebsd.org>, "<dev-commits-src-all@freebsd.org>" <dev-commits-src-all@freebsd.org>, "<dev-commits-src-main@freebsd.org>" <dev-commits-src-main@freebsd.org> Subject: Re: git: 4456846a1a0d - main - bin/date: Upgrade calculations Message-ID: <1037448433.54513.1688441647903@mail.yahoo.com> In-Reply-To: <CANCZdfqMvf1QuS=fNQjRPe3YUbp1zPQW4aorh=VTRHk%2Bf_e8qg@mail.gmail.com> References: <202307040308.36438MTA093771@gitrepo.freebsd.org> <CANCZdfqMvf1QuS=fNQjRPe3YUbp1zPQW4aorh=VTRHk%2Bf_e8qg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_54512_580997230.1688441647901 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hmm ... Dragonfly has no armv7 or i386, so they didn't get it too wrong.I guess=C2= =A0the int64_t would be a quick fix or another option, which I was considei= rng, was to look at unsigning it but taking care of the edge cases ... I wa= s too lazy for that. Please go ahead and do the quick fix ;) Pedro. On Monday, July 3, 2023 at 10:12:13 PM GMT-5, Warner Losh <imp@bsdimp.c= om> wrote: =20 =20 This is a nope on armv7 and i386. So it has no effect there. DF got it wro= ng. These should likely be int64_t to avoid the overflow. No? Warner On Mon, Jul 3, 2023, 9:08 PM Pedro F. Giffuni <pfg@freebsd.org> wrote: The branch main has been updated by pfg: URL: https://cgit.FreeBSD.org/src/commit/?id=3D4456846a1a0d8cb6d0e6bae89f11= 34fa0a1af5cf commit 4456846a1a0d8cb6d0e6bae89f1134fa0a1af5cf Author:=C2=A0 =C2=A0 =C2=A0Pedro F. Giffuni <pfg@FreeBSD.org> AuthorDate: 2023-07-03 02:32:10 +0000 Commit:=C2=A0 =C2=A0 =C2=A0Pedro F. Giffuni <pfg@FreeBSD.org> CommitDate: 2023-07-04 03:08:01 +0000 =C2=A0 =C2=A0 bin/date: Upgrade calculations =C2=A0 =C2=A0 Use long instead of int for numerous calculations, fixing a n= umber of =C2=A0 =C2=A0 date calculation overflow issues. =C2=A0 =C2=A0 Obtained from:=C2=A0 DragonflyBSD =C2=A0 =C2=A0 Git log:=C2=A0 =C2=A0 =C2=A0 =C2=A0 4238ce6f0c6df33ce677ae298= b245c62cd60fb43 (only partial) --- =C2=A0bin/date/vary.c | 20 ++++++++++---------- =C2=A01 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/date/vary.c b/bin/date/vary.c index 5f0123110ee3..6f3c59950ecf 100644 --- a/bin/date/vary.c +++ b/bin/date/vary.c @@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$"); =C2=A0#include "vary.h" =C2=A0struct trans { -=C2=A0 int val; +=C2=A0 long val; =C2=A0 =C2=A0const char *str; =C2=A0}; @@ -52,7 +52,7 @@ static struct trans trans_wday[] =3D { =C2=A0}; =C2=A0static char digits[] =3D "0123456789"; -static int adjhour(struct tm *, char, int, int); +static int adjhour(struct tm *, char, long, int); =C2=A0static int =C2=A0domktime(struct tm *t, char type) @@ -125,7 +125,7 @@ daysinmonth(const struct tm *t) =C2=A0static int -adjyear(struct tm *t, char type, int val, int mk) +adjyear(struct tm *t, char type, long val, int mk) =C2=A0{ =C2=A0 =C2=A0switch (type) { =C2=A0 =C2=A0 =C2=A0case '+': @@ -146,7 +146,7 @@ adjyear(struct tm *t, char type, int val, int mk) =C2=A0} =C2=A0static int -adjmon(struct tm *t, char type, int val, int istext, int mk) +adjmon(struct tm *t, char type, long val, int istext, int mk) =C2=A0{ =C2=A0 =C2=A0int lmdays; @@ -206,7 +206,7 @@ adjmon(struct tm *t, char type, int val, int istext, in= t mk) =C2=A0} =C2=A0static int -adjday(struct tm *t, char type, int val, int mk) +adjday(struct tm *t, char type, long val, int mk) =C2=A0{ =C2=A0 =C2=A0int lmdays; @@ -250,7 +250,7 @@ adjday(struct tm *t, char type, int val, int mk) =C2=A0} =C2=A0static int -adjwday(struct tm *t, char type, int val, int istext, int mk) +adjwday(struct tm *t, char type, long val, int istext, int mk) =C2=A0{ =C2=A0 =C2=A0if (val < 0) =C2=A0 =C2=A0 =C2=A0return 0; @@ -286,7 +286,7 @@ adjwday(struct tm *t, char type, int val, int istext, i= nt mk) =C2=A0} =C2=A0static int -adjhour(struct tm *t, char type, int val, int mk) +adjhour(struct tm *t, char type, long val, int mk) =C2=A0{ =C2=A0 =C2=A0if (val < 0) =C2=A0 =C2=A0 =C2=A0return 0; @@ -331,7 +331,7 @@ adjhour(struct tm *t, char type, int val, int mk) =C2=A0} =C2=A0static int -adjmin(struct tm *t, char type, int val, int mk) +adjmin(struct tm *t, char type, long val, int mk) =C2=A0{ =C2=A0 =C2=A0if (val < 0) =C2=A0 =C2=A0 =C2=A0return 0; @@ -372,7 +372,7 @@ adjmin(struct tm *t, char type, int val, int mk) =C2=A0} =C2=A0static int -adjsec(struct tm *t, char type, int val, int mk) +adjsec(struct tm *t, char type, long val, int mk) =C2=A0{ =C2=A0 =C2=A0if (val < 0) =C2=A0 =C2=A0 =C2=A0return 0; @@ -419,7 +419,7 @@ vary_apply(const struct vary *v, struct tm *t) =C2=A0 =C2=A0char which; =C2=A0 =C2=A0char *arg; =C2=A0 =C2=A0size_t len; -=C2=A0 int val; +=C2=A0 long val; =C2=A0 =C2=A0for (; v; v =3D v->next) { =C2=A0 =C2=A0 =C2=A0type =3D *v->arg; =20 ------=_Part_54512_580997230.1688441647901 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit <html><head></head><body><div class="ydp9448d369yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"><div></div> <div dir="ltr" data-setdir="false">Hmm ...</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Dragonfly has no armv7 or i386, so they didn't get it too wrong.</div><div dir="ltr" data-setdir="false">I guess <span><span style="color: rgb(0, 0, 0); font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 16px;">the int64_t would be a quick fix or</span></span> another option, which I was consideirng, was to look at unsigning it but taking care of the edge cases ... I was too lazy for that.</div><div><br></div><div dir="ltr" data-setdir="false">Please go ahead and do the quick fix ;)</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Pedro.</div><div dir="ltr" data-setdir="false"><br></div> </div><div id="ydp4b6aa0ddyahoo_quoted_9134776597" class="ydp4b6aa0ddyahoo_quoted"> <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;"> <div> On Monday, July 3, 2023 at 10:12:13 PM GMT-5, Warner Losh <imp@bsdimp.com> wrote: </div> <div><br></div> <div><br></div> <div><div id="ydp4b6aa0ddyiv0439244616"><div><div>This is a nope on armv7 and i386. So it has no effect there. DF got it wrong. These should likely be int64_t to avoid the overflow. No?<div><br clear="none"></div><div>Warner</div></div><br clear="none"><div id="ydp4b6aa0ddyiv0439244616yqt39150" class="ydp4b6aa0ddyiv0439244616yqt9769528136"><div class="ydp4b6aa0ddyiv0439244616gmail_quote"><div dir="ltr" class="ydp4b6aa0ddyiv0439244616gmail_attr">On Mon, Jul 3, 2023, 9:08 PM Pedro F. Giffuni <<a shape="rect" href="mailto:pfg@freebsd.org" rel="nofollow" target="_blank">pfg@freebsd.org</a>> wrote:<br clear="none"></div><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;" class="ydp4b6aa0ddyiv0439244616gmail_quote">The branch main has been updated by pfg:<br clear="none"> <br clear="none"> URL: <a shape="rect" href="https://cgit.FreeBSD.org/src/commit/?id=4456846a1a0d8cb6d0e6bae89f1134fa0a1af5cf" rel="nofollow" target="_blank">https://cgit.FreeBSD.org/src/commit/?id=4456846a1a0d8cb6d0e6bae89f1134fa0a1af5cf</a><br clear="none"> <br clear="none"> commit 4456846a1a0d8cb6d0e6bae89f1134fa0a1af5cf<br clear="none"> Author: Pedro F. Giffuni <pfg@FreeBSD.org><br clear="none"> AuthorDate: 2023-07-03 02:32:10 +0000<br clear="none"> Commit: Pedro F. Giffuni <pfg@FreeBSD.org><br clear="none"> CommitDate: 2023-07-04 03:08:01 +0000<br clear="none"> <br clear="none"> bin/date: Upgrade calculations<br clear="none"> <br clear="none"> Use long instead of int for numerous calculations, fixing a number of<br clear="none"> date calculation overflow issues.<br clear="none"> <br clear="none"> Obtained from: DragonflyBSD<br clear="none"> Git log: 4238ce6f0c6df33ce677ae298b245c62cd60fb43 (only partial)<br clear="none"> ---<br clear="none"> bin/date/vary.c | 20 ++++++++++----------<br clear="none"> 1 file changed, 10 insertions(+), 10 deletions(-)<br clear="none"> <br clear="none"> diff --git a/bin/date/vary.c b/bin/date/vary.c<br clear="none"> index 5f0123110ee3..6f3c59950ecf 100644<br clear="none"> --- a/bin/date/vary.c<br clear="none"> +++ b/bin/date/vary.c<br clear="none"> @@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$");<br clear="none"> #include "vary.h"<br clear="none"> <br clear="none"> struct trans {<br clear="none"> - int val;<br clear="none"> + long val;<br clear="none"> const char *str;<br clear="none"> };<br clear="none"> <br clear="none"> @@ -52,7 +52,7 @@ static struct trans trans_wday[] = {<br clear="none"> };<br clear="none"> <br clear="none"> static char digits[] = "0123456789";<br clear="none"> -static int adjhour(struct tm *, char, int, int);<br clear="none"> +static int adjhour(struct tm *, char, long, int);<br clear="none"> <br clear="none"> static int<br clear="none"> domktime(struct tm *t, char type)<br clear="none"> @@ -125,7 +125,7 @@ daysinmonth(const struct tm *t)<br clear="none"> <br clear="none"> <br clear="none"> static int<br clear="none"> -adjyear(struct tm *t, char type, int val, int mk)<br clear="none"> +adjyear(struct tm *t, char type, long val, int mk)<br clear="none"> {<br clear="none"> switch (type) {<br clear="none"> case '+':<br clear="none"> @@ -146,7 +146,7 @@ adjyear(struct tm *t, char type, int val, int mk)<br clear="none"> }<br clear="none"> <br clear="none"> static int<br clear="none"> -adjmon(struct tm *t, char type, int val, int istext, int mk)<br clear="none"> +adjmon(struct tm *t, char type, long val, int istext, int mk)<br clear="none"> {<br clear="none"> int lmdays;<br clear="none"> <br clear="none"> @@ -206,7 +206,7 @@ adjmon(struct tm *t, char type, int val, int istext, int mk)<br clear="none"> }<br clear="none"> <br clear="none"> static int<br clear="none"> -adjday(struct tm *t, char type, int val, int mk)<br clear="none"> +adjday(struct tm *t, char type, long val, int mk)<br clear="none"> {<br clear="none"> int lmdays;<br clear="none"> <br clear="none"> @@ -250,7 +250,7 @@ adjday(struct tm *t, char type, int val, int mk)<br clear="none"> }<br clear="none"> <br clear="none"> static int<br clear="none"> -adjwday(struct tm *t, char type, int val, int istext, int mk)<br clear="none"> +adjwday(struct tm *t, char type, long val, int istext, int mk)<br clear="none"> {<br clear="none"> if (val < 0)<br clear="none"> return 0;<br clear="none"> @@ -286,7 +286,7 @@ adjwday(struct tm *t, char type, int val, int istext, int mk)<br clear="none"> }<br clear="none"> <br clear="none"> static int<br clear="none"> -adjhour(struct tm *t, char type, int val, int mk)<br clear="none"> +adjhour(struct tm *t, char type, long val, int mk)<br clear="none"> {<br clear="none"> if (val < 0)<br clear="none"> return 0;<br clear="none"> @@ -331,7 +331,7 @@ adjhour(struct tm *t, char type, int val, int mk)<br clear="none"> }<br clear="none"> <br clear="none"> static int<br clear="none"> -adjmin(struct tm *t, char type, int val, int mk)<br clear="none"> +adjmin(struct tm *t, char type, long val, int mk)<br clear="none"> {<br clear="none"> if (val < 0)<br clear="none"> return 0;<br clear="none"> @@ -372,7 +372,7 @@ adjmin(struct tm *t, char type, int val, int mk)<br clear="none"> }<br clear="none"> <br clear="none"> static int<br clear="none"> -adjsec(struct tm *t, char type, int val, int mk)<br clear="none"> +adjsec(struct tm *t, char type, long val, int mk)<br clear="none"> {<br clear="none"> if (val < 0)<br clear="none"> return 0;<br clear="none"> @@ -419,7 +419,7 @@ vary_apply(const struct vary *v, struct tm *t)<br clear="none"> char which;<br clear="none"> char *arg;<br clear="none"> size_t len;<br clear="none"> - int val;<br clear="none"> + long val;<br clear="none"> <br clear="none"> for (; v; v = v->next) {<br clear="none"> type = *v->arg;<br clear="none"> </blockquote></div></div> </div></div></div> </div> </div></body></html> ------=_Part_54512_580997230.1688441647901--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1037448433.54513.1688441647903>