if (arg->data) { if ((arg->type & ArgMask) == ArgAttribute) { int i; CK_ATTRIBUTE *template = (CK_ATTRIBUTE *)arg->data;  for (i=0; i < arg->arraySize; i++) { free(template[i].pValue); } } free(arg->data); }
argFreeData(arg);
void argFree(Value *arg){    if (arg == NULL) return;    arg->reference--;    if (arg->reference == 0) {	if (arg->type & ArgFile) {	    free(arg->filename);	}	if (arg->data) {	    if ((arg->type & ArgMask) == ArgAttribute) {		int i;		CK_ATTRIBUTE *template = (CK_ATTRIBUTE *)arg->data;		for (i=0; i < arg->arraySize; i++) {		    free(template[i].pValue);		}	    }	    free(arg->data);	}	free (arg);    }}