From 65b7eaeeff4933982b53886e989cf28a4afac294 Mon Sep 17 00:00:00 2001 From: Edgar Simo Date: Sat, 21 Feb 2009 18:03:22 +0000 Subject: [PATCH] More verbosity and error checking. --- src/haptic/SDL_haptic.c | 15 +++++++++++---- src/haptic/linux/SDL_syshaptic.c | 11 +++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/haptic/SDL_haptic.c b/src/haptic/SDL_haptic.c index 9f99b0f16..bb66af67b 100644 --- a/src/haptic/SDL_haptic.c +++ b/src/haptic/SDL_haptic.c @@ -66,13 +66,20 @@ ValidHaptic(SDL_Haptic * haptic) int valid; valid = 0; - for (i = 0; i < SDL_numhaptics; i++) { - if (SDL_haptics[i] == haptic) { - valid = 1; - break; + if (haptic != NULL) { + for (i = 0; i < SDL_numhaptics; i++) { + if (SDL_haptics[i] == haptic) { + valid = 1; + break; + } } } + /* Create the error here. */ + if (valid == 0) { + SDL_SetError("Haptic: Invalid haptic device identifier"); + } + return valid; } diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index dc6534106..91e986631 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -395,17 +395,28 @@ SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) int fd; int ret; + /* Find the joystick in the haptic list. */ for (i = 0; i < MAX_HAPTICS; i++) { if (SDL_hapticlist[i].fname != NULL) { if (SDL_strcmp(SDL_hapticlist[i].fname, joystick->hwdata->fname) == 0) { haptic->index = i; + break; } } } + if (i >= MAX_HAPTICS) { + SDL_SetError("Haptic: Joystick doesn't have Haptic capabilities"); + return -1; + } fd = open(joystick->hwdata->fname, O_RDWR, 0); + if (fd < 0) { + SDL_SetError("Haptic: Unable to open %s: %s", + joystick->hwdata->fname, strerror(errno)); + return -1; + } ret = SDL_SYS_HapticOpenFromFD(haptic, fd); /* Already closes on error. */ if (ret < 0) { return -1;