[Pcsclite-cvs-commit] PCSC/src readerfactory.c,1.26,1.27
sauveron-guest@quantz.debian.org
sauveron-guest@quantz.debian.org
Mon, 29 Sep 2003 16:05:28 +0200
Update of /cvsroot/pcsclite/PCSC/src
In directory quantz:/tmp/cvs-serv14167/src
Modified Files:
readerfactory.c
Log Message:
Clean up 2 memory leaks
Index: readerfactory.c
===================================================================
RCS file: /cvsroot/pcsclite/PCSC/src/readerfactory.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- readerfactory.c 29 Sep 2003 13:35:45 -0000 1.26
+++ readerfactory.c 29 Sep 2003 14:05:26 -0000 1.27
@@ -246,14 +246,33 @@
(sContexts[dwContext])->dwVersion = 0;
(sContexts[dwContext])->dwPort = 0;
- (sContexts[dwContext])->mMutex = 0;
(sContexts[dwContext])->vHandle = 0;
(sContexts[dwContext])->dwPublicID = 0;
(sContexts[dwContext])->dwIdentity = 0;
- if (parentNode >= 0)
+ /*
+ * Destroy and free the mutex
+ */
+ if (*(sContexts[dwContext])->dwMutex == 1)
{
- *(sContexts[dwContext])->dwFeeds -= 1;
+ SYS_MutexDestroy((sContexts[dwContext])->mMutex);
+ free((sContexts[dwContext])->mMutex);
+ }
+
+ *(sContexts[dwContext])->dwMutex -= 1;
+
+ if (*(sContexts[dwContext])->dwMutex == 0)
+ {
+ free((sContexts[dwContext])->dwMutex);
+ (sContexts[dwContext])->dwMutex = 0;
+ }
+
+ *(sContexts[dwContext])->dwFeeds -= 1;
+
+ if (*(sContexts[dwContext])->dwFeeds == 0)
+ {
+ free((sContexts[dwContext])->dwFeeds);
+ (sContexts[dwContext])->dwFeeds = 0;
}
*dwNumContexts -= 1;
@@ -405,12 +424,36 @@
(sContexts[dwContextB])->dwVersion = 0;
(sContexts[dwContextB])->dwPort = 0;
- (sContexts[dwContextB])->mMutex = 0;
(sContexts[dwContextB])->vHandle = 0;
(sContexts[dwContextB])->dwPublicID = 0;
(sContexts[dwContextB])->dwIdentity = 0;
+
+ /*
+ * Destroy and free the mutex
+ */
+ if (*(sContexts[dwContextB])->dwMutex == 1)
+ {
+ SYS_MutexDestroy((sContexts[dwContextB])->mMutex);
+ free((sContexts[dwContextB])->mMutex);
+ }
+
+ *(sContexts[dwContextB])->dwMutex -= 1;
+
+ if (*(sContexts[dwContextB])->dwMutex == 0)
+ {
+ free((sContexts[dwContextB])->dwMutex);
+ (sContexts[dwContextB])->dwMutex = 0;
+ }
+
*(sContexts[dwContextB])->dwFeeds -= 1;
+
+ if (*(sContexts[dwContextB])->dwFeeds == 0)
+ {
+ free((sContexts[dwContextB])->dwFeeds);
+ (sContexts[dwContextB])->dwFeeds = 0;
+ }
+
*dwNumContexts -= 1;
return rv;