diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2014-12-03 23:06:56 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2014-12-03 23:06:56 +0000 |
commit | 845332310d4cfdcd5341dc19c93a3dbdd3850c76 (patch) | |
tree | c3ebfcb123839eb60b2334e4bb457ec0c48f7f35 | |
parent | Update to 2.3 (diff) |
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)
Notes
Notes:
svn path=/head/; revision=373852
-rw-r--r-- | audio/liblo/files/patch-src-messages.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/audio/liblo/files/patch-src-messages.c b/audio/liblo/files/patch-src-messages.c new file mode 100644 index 000000000000..0eb8820b8e97 --- /dev/null +++ b/audio/liblo/files/patch-src-messages.c @@ -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); + } + } + |