do not commit bad char* foo that breaks on !32 bit platforms
Dana Jansens danakj@orodu.net
2 files changed,
9 insertions(+),
12 deletions(-)
M
openbox/prop.c
→
openbox/prop.c
@@ -131,23 +131,21 @@ CREATE(openbox_pid, "_OPENBOX_PID");
CREATE(openbox_premax, "_OPENBOX_PREMAX"); } -gboolean prop_get(Window win, Atom prop, Atom type, int size, - guchar **data, gulong num) +gboolean prop_get32(Window win, Atom prop, Atom type, gulong **data,gulong num) { gboolean ret = FALSE; int res; - guchar *xdata = NULL; + gulong *xdata = NULL; Atom ret_type; int ret_size; gulong ret_items, bytes_left; - long num32 = 32 / size * num; /* num in 32-bit elements */ - res = XGetWindowProperty(ob_display, win, prop, 0l, num32, + res = XGetWindowProperty(ob_display, win, prop, 0l, num, FALSE, type, &ret_type, &ret_size, - &ret_items, &bytes_left, &xdata); + &ret_items, &bytes_left, (guchar**)&xdata); if (res == Success && ret_items && xdata) { - if (ret_size == size && ret_items >= num) { - *data = g_memdup(xdata, num * (size / 8)); + if (ret_size == 32 && ret_items >= num) { + *data = g_memdup(xdata, num * sizeof(gulong)); ret = TRUE; } XFree(xdata);
M
openbox/prop.h
→
openbox/prop.h
@@ -139,8 +139,8 @@ Atoms prop_atoms;
void prop_startup(); -gboolean prop_get(Window win, Atom prop, Atom type, int size, - guchar **data, gulong num); +gboolean prop_get32(Window win, Atom prop, Atom type, + gulong **data, gulong num); gboolean prop_get_prealloc(Window win, Atom prop, Atom type, int size, guchar *data, gulong num);@@ -201,8 +201,7 @@ (guchar*)&value, 1))
/* Get an amount of a 32-bit property into an array (which must be freed) */ #define PROP_GET32A(win, prop, type, value, num) \ - (prop_get(win, prop_atoms.prop, prop_atoms.type, 32, \ - (guchar**)&value, num)) + (prop_get32(win, prop_atoms.prop, prop_atoms.type, (gulong**)&value, num)) /* Get an entire 32-bit property into an array (which must be freed) */ #define PROP_GET32U(win, prop, type, value, num) \