summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dix/ptrveloc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c
index e75300a17..050c12a0c 100644
--- a/dix/ptrveloc.c
+++ b/dix/ptrveloc.c
@@ -134,13 +134,19 @@ InitPredictableAccelerationScheme(DeviceIntPtr dev,
scheme = *protoScheme;
vel = calloc(1, sizeof(DeviceVelocityRec));
schemeData = calloc(1, sizeof(PredictableAccelSchemeRec));
- if (!vel || !schemeData)
+ if (!vel || !schemeData) {
+ free(vel);
+ free(schemeData);
return FALSE;
+ }
InitVelocityData(vel);
schemeData->vel = vel;
scheme.accelData = schemeData;
- if (!InitializePredictableAccelerationProperties(dev, vel, schemeData))
+ if (!InitializePredictableAccelerationProperties(dev, vel, schemeData)) {
+ free(vel);
+ free(schemeData);
return FALSE;
+ }
/* all fine, assign scheme to device */
dev->valuator->accelScheme = scheme;
return TRUE;