summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-06-30 16:18:20 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-06-30 16:18:20 +1000
commitd7f6f7eda435b550d782b545cd7828b21c19b7b4 (patch)
treea3f40ff8309458655877845461ba693b32e4a5e0
parent248faefc957a9b0877384842540b2d935e1b5c07 (diff)
Plug memory leak from XGetAtomName.
-rw-r--r--src/list.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/list.c b/src/list.c
index 2313fbd..0abde7a 100644
--- a/src/list.c
+++ b/src/list.c
@@ -161,10 +161,15 @@ print_classes_xi2(Display* display, XIAnyClassInfo **classes,
case XIButtonClass:
{
XIButtonClassInfo *b = (XIButtonClassInfo*)classes[i];
+ char *name;
printf("\t\tButtons supported: %d\n", b->num_buttons);
printf("\t\tButton labels:");
for (j = 0; j < b->num_buttons; j++)
- printf(" %s", (b->labels[j]) ? XGetAtomName(display, b->labels[j]) : "None");
+ {
+ name = (b->labels[j]) ? XGetAtomName(display, b->labels[j]) : NULL;
+ printf(" %s", (name) ? name : "None");
+ XFree(name);
+ }
printf("\n");
printf("\t\tButton state:");
for (j = 0; j < b->state.mask_len * 8; j++)
@@ -183,14 +188,17 @@ print_classes_xi2(Display* display, XIAnyClassInfo **classes,
case XIValuatorClass:
{
XIValuatorClassInfo *v = (XIValuatorClassInfo*)classes[i];
+ char *name = v->label ? XGetAtomName(display, v->label) : NULL;
+
printf("\t\tDetail for Valuator %d:\n", v->number);
- printf("\t\t Label: %s\n", v->label ? XGetAtomName(display, v->label) : "None");
+ printf("\t\t Label: %s\n", (name) ? name : "None");
printf("\t\t Range: %f - %f\n", v->min, v->max);
printf("\t\t Resolution: %d units/m\n", v->resolution);
printf("\t\t Mode: %s\n", v->mode == Absolute ? "absolute" :
"relative");
if (v->mode == Absolute)
printf("\t\t Current value: %f\n", v->value);
+ XFree(name);
}
break;
}