forked from Lainports/freebsd-ports
correctly that is being sent trough libnotify (written by Milosz Derezynski) - Bump PORTREVISION Submitted by: Andreas Kohn (maintainer)
62 lines
1.9 KiB
C
62 lines
1.9 KiB
C
diff -Naur notification-daemon-0.3.5.orig/src/daemon.c notification-daemon-0.3.5/src/daemon.c
|
|
--- src/daemon.c 2006-04-26 10:32:50.000000000 +0200
|
|
+++ src/daemon.c 2006-06-18 05:07:47.000000000 +0200
|
|
@@ -399,14 +399,54 @@
|
|
GValueArray *image_struct;
|
|
GValue *value;
|
|
GArray *tmp_array;
|
|
+ GType type = G_VALUE_TYPE (icon_data);
|
|
+
|
|
+ static const GType types[] = {
|
|
+ G_TYPE_INT,
|
|
+ G_TYPE_INT,
|
|
+ G_TYPE_INT,
|
|
+ G_TYPE_BOOLEAN,
|
|
+ G_TYPE_INT,
|
|
+ G_TYPE_INT
|
|
+ };
|
|
+
|
|
+
|
|
+ if (dbus_g_type_is_struct (type))
|
|
+ {
|
|
+ int n;
|
|
+
|
|
+ if (dbus_g_type_get_struct_size (type) < 7)
|
|
+ {
|
|
+ g_warning("_notify_daemon_process_icon_data expected 7 data members, got only %d", dbus_g_type_get_struct_size (type));
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
+ for (n = 0; n < G_N_ELEMENTS (types); ++n)
|
|
+ {
|
|
+ GType check = dbus_g_type_get_struct_member_type (type, n);
|
|
+ if (check != types[n])
|
|
+ {
|
|
+ g_warning("_notify_daemon_process_icon_data expected '%s' at position %d, but got '%s'",
|
|
+ g_type_name (types[n]), n, g_type_name (check));
|
|
+ return FALSE;
|
|
+ }
|
|
|
|
- if (!G_VALUE_HOLDS(icon_data, G_TYPE_VALUE_ARRAY))
|
|
+ /* We must check this separately as it's not a constant and can't be part of the types[] array */
|
|
+ if (dbus_g_type_get_struct_member_type (type, 6) != DBUS_TYPE_G_UCHAR_ARRAY)
|
|
+ {
|
|
+ g_warning("_notify_daemon_process_icon_data expected '%s' at position %d, but got '%s'",
|
|
+ g_type_name (DBUS_TYPE_G_UCHAR_ARRAY), 6, g_type_name (dbus_g_type_get_struct_member_type (type,6)));
|
|
+ return FALSE;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ else
|
|
{
|
|
- g_warning("_notify_daemon_process_icon_data expected a "
|
|
- "GValue of type GValueArray");
|
|
- return FALSE;
|
|
+ g_warning("_notify_daemon_process_icon_data got wrong data");
|
|
+ return FALSE;
|
|
}
|
|
|
|
+
|
|
image_struct = (GValueArray *)g_value_get_boxed(icon_data);
|
|
value = g_value_array_get_nth(image_struct, 0);
|
|
|