Vitaliy Margolen : dinput: Fix usage of HeapReAlloc.

Alexandre Julliard julliard at winehq.org
Mon Dec 29 08:47:37 CST 2008


Module: wine
Branch: master
Commit: a610cfb64c16179b718a0559932375fc83571c65
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a610cfb64c16179b718a0559932375fc83571c65

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Sun Dec 28 13:40:47 2008 -0700

dinput: Fix usage of HeapReAlloc.

---

 dlls/dinput/joystick_linuxinput.c |   19 +++++++++++++------
 1 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index a08a5b7..b07166c 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -228,6 +228,7 @@ static void find_joydevs(void)
         int fd;
         int no_ff_check = 0;
         int j;
+        struct JoyDev *new_joydevs;
 
         snprintf(buf, sizeof(buf), EVDEVPREFIX"%d", i);
 
@@ -319,12 +320,18 @@ static void find_joydevs(void)
 	  }
 	}
 
-	if (have_joydevs==0) {
-	  joydevs = HeapAlloc(GetProcessHeap(), 0, sizeof(struct JoyDev));
-	} else {
-	  HeapReAlloc(GetProcessHeap(), 0, joydevs, (1+have_joydevs) * sizeof(struct JoyDev));
-	}
-	memcpy(joydevs+have_joydevs, &joydev, sizeof(struct JoyDev));
+        if (!have_joydevs)
+            new_joydevs = HeapAlloc(GetProcessHeap(), 0, sizeof(struct JoyDev));
+        else
+            new_joydevs = HeapReAlloc(GetProcessHeap(), 0, joydevs, (1 + have_joydevs) * sizeof(struct JoyDev));
+
+        if (!new_joydevs)
+        {
+            close(fd);
+            continue;
+        }
+        joydevs = new_joydevs;
+        memcpy(joydevs + have_joydevs, &joydev, sizeof(joydev));
         have_joydevs++;
       }
 




More information about the wine-cvs mailing list