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/>
index | next in thread | previous in thread | raw e-mail
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 parameter of type 'long' which may cause truncation of value https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210831 --- Description --- src/utils.c has the code: bytes_change = 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=cortex_a7 specified) that reported this suggested use of llabs (from C99). The labs parameter and return type need not match size_t well for the purpose, even ignoring unsigned vs. signed issue for the same width if that occurs. bytes_change = (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, &newsize, . . .) 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 types involved here do exist) then an explicit expansion of an expression (or macros that expand to such) would be a way to get that more auto-adjusting nature: bytes_change = (size_t) ((oldsize <= newsize) ?newsize - oldsize :oldsize-newsize);help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-210831-32340-iBkPTkqPzp>
