[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;
 }