diff --git a/source/blender/python/api2_2x/matrix.c b/source/blender/python/api2_2x/matrix.c
index 8f5e279406297c24b3759b30627870d7da4b934a..ef137731a78257d66cfc177513be5226835409c3 100644
--- a/source/blender/python/api2_2x/matrix.c
+++ b/source/blender/python/api2_2x/matrix.c
@@ -754,7 +754,8 @@ PyObject *Matrix_sub( PyObject * m1, PyObject * m2 )
 
 PyObject *Matrix_mul( PyObject * m1, PyObject * m2 )
 {
-	float *mat;
+	float *mat = NULL;
+	PyObject *retval;;
 	int matSizeV, rowSizeV, colSizeV, rowSizeW, colSizeW, matSizeW, x, y,
 		z;
 	float dot = 0;
@@ -795,7 +796,9 @@ PyObject *Matrix_mul( PyObject * m1, PyObject * m2 )
 					matW->matrix[x][y];
 			}
 		}
-		return newMatrixObject( mat, rowSizeV, colSizeV );
+		retval = ( PyObject* ) newMatrixObject( mat, rowSizeV, colSizeV );
+		PyMem_Free( mat );
+		return retval;
 	} else if( matW->flag == 0 && matV->flag == 0 ) {	//true matrix multiplication
 		if( colSizeV != rowSizeW ) {
 			return EXPP_ReturnPyObjError( PyExc_AttributeError,
@@ -818,7 +821,9 @@ PyObject *Matrix_mul( PyObject * m1, PyObject * m2 )
 				dot = 0;
 			}
 		}
-		return newMatrixObject( mat, rowSizeV, colSizeW );
+		retval = ( PyObject* )  newMatrixObject( mat, rowSizeV, colSizeW );
+		PyMem_Free( mat );
+		return retval;
 	} else
 		return EXPP_ReturnPyObjError( PyExc_AttributeError,
 					      "Error in matrix_mul...\n" );