diff -up ./src/coolkey/slot.cpp.reader-state-fix ./src/coolkey/slot.cpp --- ./src/coolkey/slot.cpp.reader-state-fix 2010-09-08 13:25:14.479109000 -0700 +++ ./src/coolkey/slot.cpp 2010-09-08 13:25:14.506109000 -0700 @@ -2185,6 +2185,7 @@ Slot::readCACCertificateFirst(CKYBuffer { CKYStatus status; CKYISOStatus apduRC; + *nextSize = 0; if (mOldCAC) { /* get the first 100 bytes of the cert */ diff -up ./src/libckyapplet/cky_card.c.reader-state-fix ./src/libckyapplet/cky_card.c --- ./src/libckyapplet/cky_card.c.reader-state-fix 2010-09-08 14:05:10.859321000 -0700 +++ ./src/libckyapplet/cky_card.c 2010-09-08 14:05:42.792257000 -0700 @@ -27,7 +27,6 @@ #ifndef WINAPI #define WINAPI -typedef SCARD_READERSTATE *LPSCARD_READERSTATE; #endif #ifndef SCARD_E_NO_READERS_AVAILABLE diff -up ./src/libckyapplet/cky_card.h.reader-state-fix ./src/libckyapplet/cky_card.h --- ./src/libckyapplet/cky_card.h.reader-state-fix 2006-06-09 11:44:17.000000000 -0700 +++ ./src/libckyapplet/cky_card.h 2010-09-08 13:25:14.518109000 -0700 @@ -41,23 +41,23 @@ CKYLIST_DECLARE(CKYReaderName, char *) CKYLIST_DECLARE(CKYCardConnection, CKYCardConnection *) CKY_BEGIN_PROTOS -void CKYReader_Init(SCARD_READERSTATE_A *reader); -void CKYReader_FreeData(SCARD_READERSTATE_A *reader); +void CKYReader_Init(SCARD_READERSTATE *reader); +void CKYReader_FreeData(SCARD_READERSTATE *reader); /* - * "Accessors": for SCARD_READERSTATE_A structure as a class. - * These functions take an SCARD_READERSTATE_A which can also be referenced + * "Accessors": for SCARD_READERSTATE structure as a class. + * These functions take an SCARD_READERSTATE which can also be referenced * directly. */ -CKYStatus CKYReader_SetReaderName(SCARD_READERSTATE_A *reader, const char *name); -const char *CKYReader_GetReaderName(const SCARD_READERSTATE_A *reader); -CKYStatus CKYReader_SetKnownState(SCARD_READERSTATE_A *reader, +CKYStatus CKYReader_SetReaderName(SCARD_READERSTATE *reader, const char *name); +const char *CKYReader_GetReaderName(const SCARD_READERSTATE *reader); +CKYStatus CKYReader_SetKnownState(SCARD_READERSTATE *reader, unsigned long state); -unsigned long CKYReader_GetKnownState(const SCARD_READERSTATE_A *reader); -unsigned long CKYReader_GetEventState(const SCARD_READERSTATE_A *reader); -CKYStatus CKYReader_GetATR(const SCARD_READERSTATE_A *reader, CKYBuffer *buf); +unsigned long CKYReader_GetKnownState(const SCARD_READERSTATE *reader); +unsigned long CKYReader_GetEventState(const SCARD_READERSTATE *reader); +CKYStatus CKYReader_GetATR(const SCARD_READERSTATE *reader, CKYBuffer *buf); /* create an array of READERSTATEs from a LIST of Readers */ -SCARD_READERSTATE_A *CKYReader_CreateArray(const CKYReaderNameList readerNames, +SCARD_READERSTATE *CKYReader_CreateArray(const CKYReaderNameList readerNames, unsigned long *readerCount); /* frees the reader, then the full array */ void CKYReader_DestroyArray(SCARD_READERSTATE *reader, unsigned long count); @@ -88,7 +88,7 @@ CKYStatus CKYCardContext_FindReadersByAT const CKYBuffer *targetATR); /* return if any of the readers in our array has changed in status */ CKYStatus CKYCardContext_WaitForStatusChange(CKYCardContext *context, - SCARD_READERSTATE_A *readers, + SCARD_READERSTATE *readers, unsigned long readerCount, unsigned long timeout); /* cancel any current operation (such as wait for status change) on this