On 30.03.2011 16:18, Dan Nicholson wrote:
<[email protected]>  wrote:
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 7a23253..114bdc3 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1459,8 +1459,9 @@ configInputDevices(XF86ConfLayoutPtr layout, 
serverLayoutPtr servlayoutp)
     while (irp) {
        indp[count] = xf86AllocateInput();
        if (!configInput(indp[count], irp->iref_inputdev, X_CONFIG)) {
-           while(count--)
+           do {
                free(indp[count]);
+           } while(count--);
            free(indp);
            return FALSE;
        }

Since the original code was doing a post-test decrement, wouldn't it
have wound all the way down to "free(indp[0])"? If it was "while
(--count)", I'd agree this is needed.

If count = 1, the original code would wind up releasing only indp[0]. The revised code releases both indp[0] and indp[1], where indp[1] is allocated just a few lines above.
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to