Fixes errors reported by Parfait 0.5.0.1 bug checking tool:
Error: Memory leak (CWE 401)
Memory leak of pointer '<unknown>' allocated with XGetAtomName(dpy, info->type)
at line 122 of src/list.c in function 'print_info'.
pointer allocated at line 84 with XGetAtomName(dpy, info->type).
<unknown> leaks when i >= info->num_classes at line 88.
Error: Memory leak (CWE 401)
Memory leak of pointer '<unknown>' allocated with XGetAtomName(dpy, a)
at line 160 of src/property.c in function 'print_property'.
pointer allocated at line 131 with XGetAtomName(dpy, a).
Memory leak of pointer '<unknown>' allocated with XGetAtomName(dpy, act_type)
at line 160 of src/property.c in function 'print_property'.
pointer allocated at line 143 with XGetAtomName(dpy, act_type).
Memory leak of pointer 'name' allocated with XGetAtomName(dpy, property)
at line 160 of src/property.c in function 'print_property'.
'name' allocated at line 61 with XGetAtomName(dpy, property).
Error: Memory leak (CWE 401)
Memory leak of pointer '<unknown>' allocated with XGetAtomName(dpy, a)
at line 521 of src/property.c in function 'print_property_xi2'.
pointer allocated at line 491 with XGetAtomName(dpy, a).
Memory leak of pointer '<unknown>' allocated with XGetAtomName(dpy, act_type)
at line 521 of src/property.c in function 'print_property_xi2'.
pointer allocated at line 504 with XGetAtomName(dpy, act_type).
Memory leak of pointer 'name' allocated with XGetAtomName(dpy, property)
at line 521 of src/property.c in function 'print_property_xi2'.
'name' allocated at line 428 with XGetAtomName(dpy, property).
Confirmed with Solaris Studio runtime checker that "list-props" now has
fewer leaks than before and "watch-props" no longer leaks a string every
time a property changes.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
if (format == FORMAT_SHORT)
return;
if (format == FORMAT_SHORT)
return;
- if(info->type != None)
- printf("\tType is %s\n", XGetAtomName(dpy, info->type));
+ if (info->type != None) {
+ char *type = XGetAtomName(dpy, info->type);
+ printf("\tType is %s\n", type);
+ XFree(type);
+ }
if (info->num_classes > 0) {
any = (XAnyClassPtr) (info->inputclassinfo);
if (info->num_classes > 0) {
any = (XAnyClassPtr) (info->inputclassinfo);
name = XGetAtomName(dpy, property);
printf("\t%s (%ld):\t", name, property);
name = XGetAtomName(dpy, property);
printf("\t%s (%ld):\t", name, property);
if (XGetDeviceProperty(dpy, dev, property, 0, 1000, False,
AnyPropertyType, &act_type, &act_format,
if (XGetDeviceProperty(dpy, dev, property, 0, 1000, False,
AnyPropertyType, &act_type, &act_format,
case XA_ATOM:
{
Atom a = *(Atom*)ptr;
case XA_ATOM:
{
Atom a = *(Atom*)ptr;
- printf("\"%s\" (%d)",
- (a) ? XGetAtomName(dpy, a) : "None",
- (int)a);
+ name = (a) ? XGetAtomName(dpy, a) : NULL;
+ printf("\"%s\" (%d)", name ? name : "None", (int)a);
+ XFree(name);
- printf("\t... of unknown type '%s'\n",
- XGetAtomName(dpy, act_type));
+ name = XGetAtomName(dpy, act_type);
+ printf("\t... of unknown type '%s'\n", name);
+ XFree(name);
name = XGetAtomName(dpy, dpev->atom);
printf("Property '%s' changed.\n", name);
name = XGetAtomName(dpy, dpev->atom);
printf("Property '%s' changed.\n", name);
print_property(dpy, dev, dpev->atom);
}
print_property(dpy, dev, dpev->atom);
}
name = XGetAtomName(dpy, property);
printf("\t%s (%ld):\t", name, property);
name = XGetAtomName(dpy, property);
printf("\t%s (%ld):\t", name, property);
if (XIGetProperty(dpy, deviceid, property, 0, 1000, False,
AnyPropertyType, &act_type, &act_format,
if (XIGetProperty(dpy, deviceid, property, 0, 1000, False,
AnyPropertyType, &act_type, &act_format,
case XA_ATOM:
{
Atom a = *(uint32_t*)ptr;
case XA_ATOM:
{
Atom a = *(uint32_t*)ptr;
- printf("\"%s\" (%ld)",
- (a) ? XGetAtomName(dpy, a) : "None",
- a);
+ name = (a) ? XGetAtomName(dpy, a) : NULL;
+ printf("\"%s\" (%ld)", name ? name : "None", a);
+ XFree(name);
- printf("\t... of unknown type %s\n",
- XGetAtomName(dpy, act_type));
+ name = XGetAtomName(dpy, act_type);
+ printf("\t... of unknown type %s\n", name);
+ XFree(name);