diff --git a/scd/apdu.c b/scd/apdu.c index e8797cd43..1aebdd331 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -3313,8 +3313,8 @@ apdu_enum_reader (int slot, int *used) int apdu_connect (int slot) { - int sw; - unsigned int status; + int sw = 0; + unsigned int status = 0; if (DBG_READER) log_debug ("enter: apdu_connect: slot=%d\n", slot); @@ -3338,15 +3338,15 @@ apdu_connect (int slot) unlock_slot (slot); } } - else - sw = 0; /* We need to call apdu_get_status_internal, so that the last-status machinery gets setup properly even if a card is inserted while scdaemon is fired up and apdu_get_status has not yet been called. Without that we would force a reset of the card with the next call to apdu_get_status. */ - apdu_get_status_internal (slot, 1, 1, &status, NULL); + if (!sw) + sw = apdu_get_status_internal (slot, 1, 1, &status, NULL); + if (sw) ; else if (!(status & APDU_CARD_PRESENT))