--- a/dbus.c 2011-06-15 19:36:22.000000000 +0800 +++ b/dbus.c 2011-09-06 20:01:24.025291940 +0800 @@ -1079,7 +1079,7 @@ } dbus_message_iter_get_basic(&args, &stat); { - dbusobj->introspect_xml_doc = xmlParseMemory((char*) stat, strlen((char*) stat)); + dbusobj->introspect_xml_doc = xmlParseMemory((char*) stat, strlen(*(char**) &stat)); dbusobj->introspect_xml = php_dbus_find_interface_node(dbusobj->introspect_xml_doc, interface); } @@ -1845,7 +1845,7 @@ dbus_instantiate(dbus_ce_dbus_object_path, return_value TSRMLS_CC); object_pathobj = (php_dbus_object_path_obj*) zend_object_store_get_object(return_value TSRMLS_CC); dbus_message_iter_get_basic(args, &stat); - object_pathobj->path = estrdup((char*) stat); + object_pathobj->path = estrdup(*(char**) &stat); } break; case 0: @@ -1860,16 +1860,16 @@ dbus_int64_t stat; dbus_message_iter_get_basic(args, &stat); switch (dbus_message_iter_get_arg_type(args)) { - case DBUS_TYPE_BOOLEAN: RETVAL_BOOL((dbus_bool_t) stat); break; - case DBUS_TYPE_BYTE: RETVAL_LONG((unsigned char) stat); break; - case DBUS_TYPE_INT16: RETVAL_LONG((dbus_int16_t) stat); break; - case DBUS_TYPE_UINT16: RETVAL_LONG((dbus_uint16_t) stat); break; - case DBUS_TYPE_INT32: RETVAL_LONG((dbus_int32_t) stat); break; - case DBUS_TYPE_UINT32: RETVAL_LONG((dbus_uint32_t) stat); break; - case DBUS_TYPE_INT64: RETVAL_LONG((dbus_int64_t) stat); break; - case DBUS_TYPE_UINT64: RETVAL_LONG((dbus_uint64_t) stat); break; + case DBUS_TYPE_BOOLEAN: RETVAL_BOOL(*(dbus_bool_t*) &stat); break; + case DBUS_TYPE_BYTE: RETVAL_LONG(*(unsigned char*) &stat); break; + case DBUS_TYPE_INT16: RETVAL_LONG(*(dbus_int16_t*) &stat); break; + case DBUS_TYPE_UINT16: RETVAL_LONG(*(dbus_uint16_t*) &stat); break; + case DBUS_TYPE_INT32: RETVAL_LONG(*(dbus_int32_t*) &stat); break; + case DBUS_TYPE_UINT32: RETVAL_LONG(*(dbus_uint32_t*) &stat); break; + case DBUS_TYPE_INT64: RETVAL_LONG(*(dbus_int64_t*) &stat); break; + case DBUS_TYPE_UINT64: RETVAL_LONG(*(dbus_uint64_t*) &stat); break; case DBUS_TYPE_STRING: - RETVAL_STRING((char*) stat, 1); + RETVAL_STRING(*(char**) &stat, 1); break; } }