On 27.10.2015 23:10, Austin English wrote:
This is based on code from the FreeRDP project, used with permission of the author, Marc-André Moreau marcandre.moreau@gmail.com
Do you plan to reuse more from there? Is it clean license-wise? And more importantly, how did FreeRDP project came up with that implementation?
+ASN1module_t WINAPI ASN1_CreateModule(ASN1uint32_t version, ASN1encodingrule_e rule, ASN1uint32_t flags, ASN1uint32_t pdu, const ASN1GenericFun_t encoder[], const ASN1GenericFun_t decoder[], const ASN1FreeFun_t freememory[], const ASN1uint32_t size[], ASN1magic_t modulename)
arg[] notation seems redundant, *arg is cleaner and more common for Wine.
- ASN1module_t module = NULL;
No need to init this.
- if (!((encoder) && (decoder) && (freememory) && (size)))
return NULL;
...
- module = (ASN1module_t) malloc(sizeof(struct tagASN1module_t));
- ZeroMemory(module, sizeof(struct tagASN1module_t));
Heap* API please. And you don't need to zero-init it, or use tag* names.
All structures seem to be documented well, what's a reason to reuse simple parts like such structure allocations?
Can this be tested by directly calling ASN1_* functions? If yes, simple test would be nice to have.