[Pcsclite-cvs-commit] r5440 - /trunk/PCSC/src/winscard_msg.c
rousseau at users.alioth.debian.org
rousseau at users.alioth.debian.org
Sat Dec 11 15:41:37 UTC 2010
Author: rousseau
Date: Sat Dec 11 15:41:35 2010
New Revision: 5440
URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5440
Log:
Use LONG instead of int to store PC/SC return codes like SCARD_E_*
The problem comes from sign extenstion from int to LONG
int rv = SCARD_E_TIMEOUT; /* 0x8010000A */
is (sign) extended into a LONG = 0xFFFFFFFF8010000A
So the line in winscard_clnt.c
if (SCARD_E_TIMEOUT == rv)
is never true on a 64-bits system because rv has been extended from int
to LONG. The comparison is then between 0x8010000A and 0xFFFFFFFF8010000A
Modified:
trunk/PCSC/src/winscard_msg.c
Modified: trunk/PCSC/src/winscard_msg.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard_msg.c?rev=5440&op=diff
==============================================================================
--- trunk/PCSC/src/winscard_msg.c (original)
+++ trunk/PCSC/src/winscard_msg.c Sat Dec 11 15:41:35 2010
@@ -162,7 +162,7 @@
char *buffer = buffer_void;
/* default is success */
- int retval = SCARD_S_SUCCESS;
+ LONG retval = SCARD_S_SUCCESS;
/* record the time when we started */
struct timeval start;
@@ -282,7 +282,7 @@
uint64_t size, void *data_void)
{
struct rxHeader header;
- int ret;
+ LONG ret;
/* header */
header.command = command;
@@ -320,7 +320,7 @@
char *buffer = buffer_void;
/* default is success */
- int retval = SCARD_S_SUCCESS;
+ LONG retval = SCARD_S_SUCCESS;
/* how many bytes remains to be written */
size_t remaining = buffer_size;
@@ -418,7 +418,7 @@
char *buffer = buffer_void;
/* default is success */
- int retval = SCARD_S_SUCCESS;
+ LONG retval = SCARD_S_SUCCESS;
/* how many bytes we must read */
size_t remaining = buffer_size;
More information about the Pcsclite-cvs-commit
mailing list