1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-01 01:17:02 +00:00

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.

Approved by: portmgr (antoine)
This commit is contained in:
Dimitry Andric 2014-12-03 23:06:56 +00:00
parent 9c3d18cec9
commit 845332310d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=373852

View File

@ -0,0 +1,13 @@
--- src/message.c.orig 2014-01-20 12:49:42.000000000 +0100
+++ src/message.c 2014-12-03 23:02:28.000000000 +0100
@@ -996,8 +996,8 @@ void lo_message_pp(lo_message m)
putchar('\n');
if (d != end) {
fprintf(stderr,
- "liblo warning: type and data do not match (off by %d) in message %p\n",
- abs((char *) d - (char *) end), m);
+ "liblo warning: type and data do not match (off by %td) in message %p\n",
+ d >= end ? (char *) d - (char *) end : (char *) end - (char *) d, m);
}
}