Blame SOURCES/atlas-memleak.patch

a5a71c
From 5ef079e305fdfe7275e6a241704fb071f7c9345d Mon Sep 17 00:00:00 2001
a5a71c
From: "R. Clint Whaley" <whaley@cs.utsa.edu>
a5a71c
Date: Sat, 2 Nov 2013 13:04:29 -0500
a5a71c
Subject: [PATCH] fixed possible memory leek in threaded QR
a5a71c
a5a71c
---
a5a71c
 AtlasBase/Students/qr.base | 12 ++++++------
a5a71c
 1 file changed, 6 insertions(+), 6 deletions(-)
a5a71c
a5a71c
diff --git a/src/threads/lapack/ATL_tgeqr2.c b/src/threads/lapack/ATL_tgeqr2.c
a5a71c
index 2263042..daf44a9 100644
a5a71c
--- a/src/threads/lapack/ATL_tgeqr2.c   
a5a71c
+++ b/src/threads/lapack/ATL_tgeqr2.c
a5a71c
@@ -10372,7 +10372,7 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
a5a71c
 /* We use a data-owner split, each thread gets 1/p of the data,               */
a5a71c
 /* and does all computation related to it.                                    */
a5a71c
 /*----------------------------------------------------------------------------*/
a5a71c
-   TYPE *myA = A, *myOldA = A, *allMem, *workMem;
a5a71c
+   TYPE *myA = A, *myOldA = A, *allMem=NULL, *workMem;
a5a71c
    int i, j, k, b0, b, th;
a5a71c
    long unsigned int CPU;
a5a71c
    size_t mem[ATL_NTHREADS], totmem, workSize;
a5a71c
@@ -10523,9 +10523,8 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
a5a71c
    ATL_goparallel(th, ATL_geqr2Worker, ts, NULL);
a5a71c
 
a5a71c
a5a71c
-   #if defined(local_copy)
a5a71c
-   free(allMem);                            /* release copied area.           */
a5a71c
-   #endif                                   /* defined(local_copy)            */
a5a71c
+   if (allMem)
a5a71c
+      free(allMem);                         /* release copied area.           */
a5a71c
    free(workMem);                           /* release work area.             */
a5a71c
    return(0);                               /* Done with dgeqr2.              */
a5a71c
 }  /* END ATL_t_dgeqr2. */
a5a71c
diff --git a/src/threads/lapack/ATL_tgeql2.c b/src/threads/lapack/ATL_tgeql2.c
a5a71c
index 2263042..daf44a9 100644
a5a71c
--- a/src/threads/lapack/ATL_tgeql2.c   
a5a71c
+++ b/src/threads/lapack/ATL_tgeql2.c
a5a71c
@@ -11660,7 +11659,7 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
a5a71c
 /* We use a data-owner split, each thread gets 1/p of the data,               */
a5a71c
 /* and does all computation related to it.                                    */
a5a71c
 /*----------------------------------------------------------------------------*/
a5a71c
-   TYPE *myA = A, *allMem, *workMem;
a5a71c
+   TYPE *myA = A, *allMem=NULL, *workMem;
a5a71c
    int i, j, k, b0, b, th;
a5a71c
    long unsigned int CPU;
a5a71c
    size_t mem[ATL_NTHREADS], totmem, workSize;
a5a71c
@@ -11823,7 +11822,8 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK,
a5a71c
    ATL_goparallel(th, ATL_geql2Worker, ts, NULL);
a5a71c
a5a71c
 
a5a71c
-   if (myCopy) free(allMem);                /* release copied area.           */
a5a71c
+   if (allMem) 
a5a71c
+      free(allMem);                         /* release copied area.           */
a5a71c
    free(workMem);                           /* release work area.             */
a5a71c
    return(0);                               /* Done with dgeql2.              */
a5a71c
 } /* END ATL_t_dgeql2 */