# HG changeset patch # User Edgar Simo # Date 1217497527 0 # Node ID 3696b9ce8a373eb824ebf2dc4274752af947f88f # Parent 2274406ba792e477c3ddfdf349785ddc43a764fc Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c. diff -r 2274406ba792 -r 3696b9ce8a37 src/haptic/SDL_haptic.c --- a/src/haptic/SDL_haptic.c Thu Jul 31 09:02:43 2008 +0000 +++ b/src/haptic/SDL_haptic.c Thu Jul 31 09:45:27 2008 +0000 @@ -322,6 +322,7 @@ /* Remove from the list */ for (i = 0; SDL_haptics[i]; ++i) { if (haptic == SDL_haptics[i]) { + SDL_haptics[i] = NULL; SDL_memcpy(&SDL_haptics[i], &SDL_haptics[i + 1], (SDL_numhaptics - i) * sizeof(haptic)); break; diff -r 2274406ba792 -r 3696b9ce8a37 src/haptic/darwin/SDL_syshaptic.c --- a/src/haptic/darwin/SDL_syshaptic.c Thu Jul 31 09:02:43 2008 +0000 +++ b/src/haptic/darwin/SDL_syshaptic.c Thu Jul 31 09:45:27 2008 +0000 @@ -470,19 +470,11 @@ void SDL_SYS_HapticClose(SDL_Haptic * haptic) { - int i; - if (haptic->hwdata) { - /* Free the effects. */ - for (i=0; ineffects; i++) { - if (haptic->effects[i].hweffect != NULL) { - SDL_SYS_HapticFreeFFEFFECT(&haptic->effects[i].hweffect->effect, - haptic->effects[i].effect.type); - SDL_free(haptic->effects[i].hweffect); - } - } + /* Free Effects. */ SDL_free(haptic->effects); + haptic->effects = NULL; haptic->neffects = 0; /* Clean up */ diff -r 2274406ba792 -r 3696b9ce8a37 src/haptic/linux/SDL_syshaptic.c --- a/src/haptic/linux/SDL_syshaptic.c Thu Jul 31 09:02:43 2008 +0000 +++ b/src/haptic/linux/SDL_syshaptic.c Thu Jul 31 09:45:27 2008 +0000 @@ -423,12 +423,17 @@ { if (haptic->hwdata) { + /* Free effects. */ + SDL_free(haptic->effects); + haptic->effects = NULL; + haptic->neffects = 0; + /* Clean up */ close(haptic->hwdata->fd); /* Free */ - SDL_free(haptic->hwdata); - SDL_free(haptic->effects); + SDL_free(haptic->hwdata); + haptic->hwdata = NULL; } /* Clear the rest. */ diff -r 2274406ba792 -r 3696b9ce8a37 src/haptic/win32/SDL_syshaptic.c --- a/src/haptic/win32/SDL_syshaptic.c Thu Jul 31 09:02:43 2008 +0000 +++ b/src/haptic/win32/SDL_syshaptic.c Thu Jul 31 09:45:27 2008 +0000 @@ -361,9 +361,6 @@ return 0; /* Error handling */ -open_err: - IDirectInputDevice_Release(device); - goto creat_err; acquire_err: IDirectInputDevice2_Unacquire(haptic->hwdata->device); query_err: @@ -435,19 +432,11 @@ void SDL_SYS_HapticClose(SDL_Haptic * haptic) { - int i; - if (haptic->hwdata) { - /* Free the effects. */ - for (i=0; ineffects; i++) { - if (haptic->effects[i].hweffect != NULL) { - SDL_SYS_HapticFreeFFEFFECT( &haptic->effects[i].hweffect->effect, - haptic->effects[i].effect.type ); - SDL_free(haptic->effects[i].hweffect); - } - } + /* Free effects. */ SDL_free(haptic->effects); + haptic->effects = NULL; haptic->neffects = 0; /* Clean up */