summaryrefslogtreecommitdiff
path: root/lib/bluetooth.h
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2012-01-16 11:11:55 +0100
committerMarcel Holtmann <marcel@holtmann.org>2012-03-04 15:24:39 -0800
commit4002cf271e3939714296c535a1ed8d4f0d5ac005 (patch)
tree4dfb6a28e13a4007c93720b4ffeec1ab8ae30c24 /lib/bluetooth.h
parentaf39e81ae92ed117719a77017adf2bb6b2dc5046 (diff)
downloadbluez-4002cf271e3939714296c535a1ed8d4f0d5ac005.tar.gz
lib: Fix compile issue when using in C++
The compiler error is: /usr/include/bluetooth/bluetooth.h::131:9: error: invalid conversion from 'void*' to 'bt_get_le64(void*)::<anonymous struct>*' ... The reason is that C++, in contrast to C, does not allow conversion of void * to anything, and this code gets compiled as C++ when the app is written in C++. The macro with the assignment itself is older, but only recent Bluez starts to use it in inline functions, thus triggering the problem. This patch keeps the "struct __attribute__((packed))" magic and merely changes the typecast so that it works in C and C++. Like the existing macro this patch relies on support for typeof.
Diffstat (limited to 'lib/bluetooth.h')
-rw-r--r--lib/bluetooth.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/bluetooth.h b/lib/bluetooth.h
index ea7373daf..0541842ac 100644
--- a/lib/bluetooth.h
+++ b/lib/bluetooth.h
@@ -141,7 +141,7 @@ enum {
({ \
struct __attribute__((packed)) { \
typeof(*(ptr)) __v; \
- } *__p = (void *) (ptr); \
+ } *__p = (typeof(__p)) (ptr); \
__p->__v; \
})
@@ -149,7 +149,7 @@ enum {
do { \
struct __attribute__((packed)) { \
typeof(*(ptr)) __v; \
- } *__p = (void *) (ptr); \
+ } *__p = (typeof(__p)) (ptr); \
__p->__v = (val); \
} while(0)