diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c index 330d5c4ad..6e64811ce 100644 --- a/hw/dmx/glxProxy/glxcmds.c +++ b/hw/dmx/glxProxy/glxcmds.c @@ -285,10 +285,13 @@ CreateContext(__GLXclientState * cl, num_be_screens = to_screen - from_screen + 1; glxc->real_ids = xallocarray(num_be_screens, sizeof(XID)); if (!glxc->real_ids) { + free(glxc); return BadAlloc; } glxc->real_vids = xallocarray(num_be_screens, sizeof(XID)); if (!glxc->real_vids) { + free(glxc->real_ids); + free(glxc); return BadAlloc; }