Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Jul 2016 01:36:54 +0000
From:      bugzilla-noreply@freebsd.org
To:        pkg@FreeBSD.org
Subject:   maintainer-feedback requested: [Bug 210831] ports-mgmt/pkg 1.8.6: src/utils.c in 32-bit context like armv6/powerpc: 'labs' given an argument of type 'long long' but has parameter of type 'long' which may cause truncation of value
Message-ID:  <bug-210831-32340-iBkPTkqPzp@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-210831-32340@https.bugs.freebsd.org/bugzilla/>
References:  <bug-210831-32340@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
Mark Millard <markmi@dsl-only.net> has reassigned Bugzilla Automation
<bugzilla@FreeBSD.org>'s request for maintainer-feedback to pkg@FreeBSD.org:
Bug 210831: ports-mgmt/pkg 1.8.6: src/utils.c in 32-bit context like
armv6/powerpc: 'labs' given an argument of type 'long long' but has paramet=
er
of type 'long' which may cause truncation of value
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D210831



--- Description ---
src/utils.c has the code:

	bytes_change =3D labs(newsize - oldsize);

where newsize and oldsize have type int64_t (or what it translates to) and
bytes_changed has type size_t (or what it translates to). The compiler
targeting armv6 (with -mcpu=3Dcortex_a7 specified) that reported this sugge=
sted
use of llabs (from C99).

The labs parameter and return type need not match size_t well for the purpo=
se,
even ignoring unsigned vs. signed issue for the same width if that occurs.

	bytes_change =3D (size_t) llabs(newsize - oldsize);

likely would be more auto adjusting without compiler warnings for current
contexts. [Depends on what set_pkg_jobs_summary_pkg(. . ., &oldsize, &newsi=
ze,
. . .) is doing under the variations in types for various contexts. Likely
oldsize and newsize values do track size_t or a signed variant with the same
width to an extent.]

If prior to C99 is to be covered (where llabs might not exist even if the t=
ypes
involved here do exist) then an explicit expansion of an expression (or mac=
ros
that expand to such) would be a way to get that more auto-adjusting nature:

	bytes_change =3D (size_t) ((oldsize <=3D newsize)
				 ?newsize - oldsize :oldsize-newsize);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-210831-32340-iBkPTkqPzp>