From 44a89dbbf6e501adaa0411b0b36874042f1eae00 Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Thu, 11 Sep 2014 07:32:20 -0700 Subject: [PATCH] src: fix OS X compilation issues --- src/cardreader.cpp | 18 ++++++++++-------- src/pcsclite.cpp | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/cardreader.cpp b/src/cardreader.cpp index d8ba4bd..e178116 100644 --- a/src/cardreader.cpp +++ b/src/cardreader.cpp @@ -167,7 +167,7 @@ NAN_METHOD(CardReader::Disconnect) { // This creates our work request, including the libuv struct. Baton* baton = new Baton(); - baton->input = reinterpret_cast(disposition); + baton->input = reinterpret_cast(new DWORD(disposition)); baton->request.data = baton; NanAssignPersistent(baton->callback, cb); baton->reader = ObjectWrap::Unwrap(args.This()); @@ -382,7 +382,7 @@ void CardReader::DoConnect(uv_work_t* req) { Baton* baton = static_cast(req->data); ConnectInput *ci = static_cast(baton->input); - unsigned long card_protocol; + DWORD card_protocol; LONG result = SCARD_S_SUCCESS; CardReader* obj = baton->reader; @@ -449,7 +449,7 @@ void CardReader::AfterConnect(uv_work_t* req, int status) { void CardReader::DoDisconnect(uv_work_t* req) { Baton* baton = static_cast(req->data); - DWORD disposition = reinterpret_cast(baton->input); + DWORD& disposition = reinterpret_cast(*baton->input); LONG result = SCARD_S_SUCCESS; CardReader* obj = baton->reader; @@ -467,17 +467,17 @@ void CardReader::DoDisconnect(uv_work_t* req) { /* Unlock the mutex */ pthread_mutex_unlock(&obj->m_mutex); - baton->result = reinterpret_cast(result); + baton->result = reinterpret_cast(new LONG(result)); } void CardReader::AfterDisconnect(uv_work_t* req, int status) { NanScope(); Baton* baton = static_cast(req->data); - LONG result = reinterpret_cast(baton->result); + LONG* result = reinterpret_cast(baton->result); - if (result) { - Local err = NanError(pcsc_stringify_error(result)); + if (*result) { + Local err = NanError(pcsc_stringify_error(*result)); // Prepare the parameters for the callback function. const unsigned argc = 1; @@ -495,7 +495,9 @@ void CardReader::AfterDisconnect(uv_work_t* req, int status) { // The callback is a permanent handle, so we have to dispose of it manually. NanDisposePersistent(baton->callback); - + DWORD* disposition = reinterpret_cast(baton->input); + delete disposition; + delete result; delete baton; } diff --git a/src/pcsclite.cpp b/src/pcsclite.cpp index 24df91d..df0ee72 100644 --- a/src/pcsclite.cpp +++ b/src/pcsclite.cpp @@ -165,7 +165,7 @@ LONG PCSCLite::get_card_readers(PCSCLite* pcsclite, AsyncResult* async_result) { } /* Find out ReaderNameLength */ - unsigned long readers_name_length; + DWORD readers_name_length; result = SCardListReaders(pcsclite->m_card_context, NULL, NULL, &readers_name_length); if (result != SCARD_S_SUCCESS) { return result;