[Pcsclite-cvs-commit] CVS PCSC/src
CVS User corcoran-guest
ludovic.rousseau@free.fr
Fri, 17 Sep 2004 13:02:56 -0600
Update of /cvsroot/pcsclite/PCSC/src
In directory haydn:/tmp/cvs-serv12719
Modified Files:
musclecard.c
Log Message:
rewrite of mscreadallocateobject
--- /cvsroot/pcsclite/PCSC/src/musclecard.c 2004/09/17 18:49:12 1.42
+++ /cvsroot/pcsclite/PCSC/src/musclecard.c 2004/09/17 19:02:56 1.43
@@ -10,7 +10,7 @@
* You may not remove this header from this file without
* prior permission from the author.
*
- * $Id: musclecard.c,v 1.42 2004/09/17 18:49:12 corcoran-guest Exp $
+ * $Id: musclecard.c,v 1.43 2004/09/17 19:02:56 corcoran-guest Exp $
*/
#include "config.h"
@@ -1769,33 +1769,48 @@
MSCString objectID, MSCPUChar8 * pOutputData,
MSCPULong32 dataSize, LPRWEventCallback rwCallback, MSCPVoid32 addParams)
{
- MSC_RV rv;
- MSCObjectInfo objInfo;
- MSCULong32 objectSize;
-
- if (pConnection == NULL)
- return MSC_INVALID_PARAMETER;
- if (localHContext == 0)
- return MSC_INTERNAL_ERROR;
-
- if (pOutputData == NULL)
- return MSC_INVALID_PARAMETER;
-
- rv = MSCGetObjectAttributes(pConnection, objectID, &objInfo);
-
- if (rv != MSC_SUCCESS)
- {
- *dataSize = 0;
- *pOutputData = '\0';
- return rv;
- }
-
- objectSize = objInfo.objectSize;
- *dataSize = objectSize;
- *pOutputData = (MSCPUChar8) malloc(sizeof(MSCUChar8) * objectSize);
+ MSC_RV rv;
+ MSCObjectInfo objInfo;
+ MSCULong32 objectSize;
+ MSCPUChar8 data = NULL;
+
+ if (pConnection == NULL)
+ return MSC_INVALID_PARAMETER;
+ if (localHContext == 0)
+ return MSC_INTERNAL_ERROR;
+
+ if (pOutputData == 0)
+ {
+ return MSC_INVALID_PARAMETER;
+ }
+
+ *dataSize = 0;
+ *pOutputData = 0;
+
+ rv = MSCGetObjectAttributes(pConnection, objectID, &objInfo);
+ if (rv == MSC_SUCCESS)
+ {
+ objectSize = objInfo.objectSize;
+ data = (MSCPUChar8) malloc(sizeof(MSCUChar8) * objectSize);
+ if(data)
+ {
+ rv = MSCReadObject(pConnection, objectID, 0, data,
+ objectSize, rwCallback, addParams);
+
+ if (rv == MSC_SUCCESS)
+ {
+ *dataSize = objectSize;
+ *pOutputData = data;
+ }
+ else
+ {
+ rv = MSC_INTERNAL_ERROR;
+ free(data);
+ }
+ }
+ }
- return MSCReadObject(pConnection, objectID, 0, *pOutputData,
- objectSize, rwCallback, addParams);
+ return rv;
}