فهرست منبع

Decrement before as the code makes more sense

Susko3 11 ماه پیش
والد
کامیت
9d03ff6c18
1فایلهای تغییر یافته به همراه6 افزوده شده و 6 حذف شده
  1. 6 6
      src/events/SDL_touch.c

+ 6 - 6
src/events/SDL_touch.c

@@ -240,15 +240,15 @@ static int SDL_DelFinger(SDL_Touch *touch, SDL_FingerID fingerid)
         return -1;
     }
 
-    if (index < (touch->num_fingers - 1)) {
-        // Move the deleted finger to the end of the active fingers array and shift the active fingers by one.
-        // This ensures that the descriptor for the now-deleted finger is located at `touch->fingers[touch->num_fingers]` (after the decrement below)
+    --touch->num_fingers;
+    if (index < (touch->num_fingers)) {
+        // Move the deleted finger to just past the end of the active fingers array and shift the active fingers by one.
+        // This ensures that the descriptor for the now-deleted finger is located at `touch->fingers[touch->num_fingers]`
         // and is ready for use in SDL_AddFinger.
         SDL_Finger *deleted_finger = touch->fingers[index]; 
-        SDL_memmove(&touch->fingers[index], &touch->fingers[index + 1], (touch->num_fingers - index - 1) * sizeof(touch->fingers[index]));
-        touch->fingers[touch->num_fingers - 1] = deleted_finger;
+        SDL_memmove(&touch->fingers[index], &touch->fingers[index + 1], (touch->num_fingers - index) * sizeof(touch->fingers[index]));
+        touch->fingers[touch->num_fingers] = deleted_finger;
     }
-    --touch->num_fingers;
     return 0;
 }