Bug 195657

Summary: Fix audio/liblo build with clang 3.5.0
Product: Ports & Packages Reporter: Dimitry Andric <dim>
Component: Individual Port(s)Assignee: freebsd-ports-bugs (Nobody) <ports-bugs>
Status: Closed FIXED    
Severity: Affects Many People CC: emaste, koalative
Priority: --- Flags: antoine: maintainer-feedback+
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 195480    
Attachments:
Description Flags
Fix audio/liblo build with clang 3.5.0 none

Description Dimitry Andric freebsd_committer freebsd_triage 2014-12-03 22:12:59 UTC
Created attachment 150155 [details]
Fix audio/liblo build with clang 3.5.0

On 64-bit arches, audio/liblo will fail to compile with clang 3.5.0, due to the following -Werror warning:

message.c:1000:17: error: absolute value function 'abs' given an argument of type 'long' but has parameter of type 'int' which may cause truncation of value [-Werror,-Wabsolute-value]
                abs((char *) d - (char *) end), m);
                ^

On 64-bit arches, pointer differences are usually longs, but simply replacing the abs() call with labs() is also not a good solution, because then the code is incorrect for 32-bit arches.

Fix this by using a ternary operator expression, which is type-safe.  While here, fix the printf format conversion specifier for printing ptrdiff_t's.
Comment 1 Bugzilla Automation freebsd_committer freebsd_triage 2014-12-03 22:12:59 UTC
Maintainer CC'd
Comment 2 Antoine Brodin freebsd_committer freebsd_triage 2014-12-03 22:48:12 UTC
Approved by portmgr (antoine)
Comment 3 Dimitry Andric freebsd_committer freebsd_triage 2014-12-03 23:07:30 UTC
Fixed by r373852.