Darwin haptic: Fixed a static analysis warning if axes==0.
--- a/src/haptic/darwin/SDL_syshaptic.c Tue May 26 12:03:51 2015 -0400
+++ b/src/haptic/darwin/SDL_syshaptic.c Tue May 26 12:47:03 2015 -0400
@@ -771,18 +771,18 @@
SDL_SYS_ToFFEFFECT(SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src)
{
int i;
- FFCONSTANTFORCE *constant;
- FFPERIODIC *periodic;
- FFCONDITION *condition; /* Actually an array of conditions - one per axis. */
- FFRAMPFORCE *ramp;
- FFCUSTOMFORCE *custom;
- FFENVELOPE *envelope;
- SDL_HapticConstant *hap_constant;
- SDL_HapticPeriodic *hap_periodic;
- SDL_HapticCondition *hap_condition;
- SDL_HapticRamp *hap_ramp;
- SDL_HapticCustom *hap_custom;
- DWORD *axes;
+ FFCONSTANTFORCE *constant = NULL;
+ FFPERIODIC *periodic = NULL;
+ FFCONDITION *condition = NULL; /* Actually an array of conditions - one per axis. */
+ FFRAMPFORCE *ramp = NULL;
+ FFCUSTOMFORCE *custom = NULL;
+ FFENVELOPE *envelope = NULL;
+ SDL_HapticConstant *hap_constant = NULL;
+ SDL_HapticPeriodic *hap_periodic = NULL;
+ SDL_HapticCondition *hap_condition = NULL;
+ SDL_HapticRamp *hap_ramp = NULL;
+ SDL_HapticCustom *hap_custom = NULL;
+ DWORD *axes = NULL;
/* Set global stuff. */
SDL_memset(dest, 0, sizeof(FFEFFECT));
@@ -911,26 +911,29 @@
case SDL_HAPTIC_DAMPER:
case SDL_HAPTIC_INERTIA:
case SDL_HAPTIC_FRICTION:
- hap_condition = &src->condition;
- condition = SDL_malloc(sizeof(FFCONDITION) * dest->cAxes);
- if (condition == NULL) {
- return SDL_OutOfMemory();
- }
- SDL_memset(condition, 0, sizeof(FFCONDITION));
+ if (dest->cAxes > 0) {
+ hap_condition = &src->condition;
+ condition = SDL_malloc(sizeof(FFCONDITION) * dest->cAxes);
+ if (condition == NULL) {
+ return SDL_OutOfMemory();
+ }
+ SDL_memset(condition, 0, sizeof(FFCONDITION));
- /* Specifics */
- for (i = 0; i < dest->cAxes; i++) {
- condition[i].lOffset = CONVERT(hap_condition->center[i]);
- condition[i].lPositiveCoefficient =
- CONVERT(hap_condition->right_coeff[i]);
- condition[i].lNegativeCoefficient =
- CONVERT(hap_condition->left_coeff[i]);
- condition[i].dwPositiveSaturation =
- CCONVERT(hap_condition->right_sat[i] / 2);
- condition[i].dwNegativeSaturation =
- CCONVERT(hap_condition->left_sat[i] / 2);
- condition[i].lDeadBand = CCONVERT(hap_condition->deadband[i] / 2);
+ /* Specifics */
+ for (i = 0; i < dest->cAxes; i++) {
+ condition[i].lOffset = CONVERT(hap_condition->center[i]);
+ condition[i].lPositiveCoefficient =
+ CONVERT(hap_condition->right_coeff[i]);
+ condition[i].lNegativeCoefficient =
+ CONVERT(hap_condition->left_coeff[i]);
+ condition[i].dwPositiveSaturation =
+ CCONVERT(hap_condition->right_sat[i] / 2);
+ condition[i].dwNegativeSaturation =
+ CCONVERT(hap_condition->left_sat[i] / 2);
+ condition[i].lDeadBand = CCONVERT(hap_condition->deadband[i] / 2);
+ }
}
+
dest->cbTypeSpecificParams = sizeof(FFCONDITION) * dest->cAxes;
dest->lpvTypeSpecificParams = condition;