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(a)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.