[Pcsclite-cvs-commit] r1681 - trunk/PCSC/src

Ludovic Rousseau rousseau at costa.debian.org
Wed Oct 12 12:34:12 UTC 2005


Author: rousseau
Date: 2005-10-12 12:34:11 +0000 (Wed, 12 Oct 2005)
New Revision: 1681

Modified:
   trunk/PCSC/src/winscard_scf.c
Log:
SCardGetStatusChange(): Context index was being used instead of Reader
index, it worked only when there was just one context.

Thanks to Najam Siddiqui for the bug report


Modified: trunk/PCSC/src/winscard_scf.c
===================================================================
--- trunk/PCSC/src/winscard_scf.c	2005-09-28 08:06:09 UTC (rev 1680)
+++ trunk/PCSC/src/winscard_scf.c	2005-10-12 12:34:11 UTC (rev 1681)
@@ -684,7 +684,7 @@
 	LPSCARD_READERSTATE_A rgReaderStates, DWORD cReaders)
 {
 
-	LONG rv, retIndice;
+	LONG rv, retIndice, readerIndice;
 	PSCARD_READERSTATE_A currReader;
 	PREADER_STATE rContext;
 	LPTSTR lpcReaderName;
@@ -706,6 +706,7 @@
 	i = 0;
 	currReader = 0;
 	retIndice = 0;
+	readerIndice = 0;
 	dwBreakFlag = 0;
 
 	if (rgReaderStates == 0 && cReaders > 0)
@@ -781,9 +782,9 @@
 
 			lpcReaderName = (char *) currReader->szReader;
 
-			retIndice = SCardGetReaderIndice(lpcReaderName);
+			readerIndice = SCardGetReaderIndice(lpcReaderName);
 			/* The requested reader name is not recognized */
-			if (0 > retIndice)
+			if (0 > readerIndice)
 			{
 				if (currReader->dwCurrentState & SCARD_STATE_UNKNOWN)
 				{
@@ -811,7 +812,7 @@
 	/*****************************************************************/
 				SCardEventLock();
 				/* Now we check all the Reader States */
-				dwState = psReaderMap[retIndice].dwCurrentState;
+				dwState = psReaderMap[readerIndice].dwCurrentState;
 
 	/*********** Check if the reader is in the correct state ********/
 				if (dwState & SCARD_STATE_UNKNOWN)
@@ -844,8 +845,8 @@
 
 				if (dwState & SCARD_STATE_PRESENT)
 				{
-					currReader->cbAtr = psReaderMap[retIndice].dwAtrLength;
-					memcpy(currReader->rgbAtr, psReaderMap[retIndice].bAtr,
+					currReader->cbAtr = psReaderMap[readerIndice].dwAtrLength;
+					memcpy(currReader->rgbAtr, psReaderMap[readerIndice].bAtr,
 						currReader->cbAtr);
 				}
 				else
@@ -920,7 +921,7 @@
 					}
 				}
 
-				if (-1 == psReaderMap[retIndice].SharedRefCount)
+				if (-1 == psReaderMap[readerIndice].SharedRefCount)
 				{
 					currReader->dwEventState |= SCARD_STATE_EXCLUSIVE;
 					currReader->dwEventState &= ~SCARD_STATE_INUSE;
@@ -930,7 +931,7 @@
 						dwBreakFlag = 1;
 					}
 				}
-				else if (psReaderMap[retIndice].SharedRefCount >= 1)
+				else if (psReaderMap[readerIndice].SharedRefCount >= 1)
 				{
 					/* A card must be inserted for it to be INUSE */
 					if (dwState & SCARD_STATE_PRESENT)




More information about the Pcsclite-cvs-commit mailing list