# HG changeset patch # User cslag # Date 1467586967 -7200 # Node ID 8a6111c2a84a634c14ea960f05962c9edcbd5a56 # Parent f1cc11a9eb98c2427e0267c990cf00954afad149 - minor callback cleanups diff -r f1cc11a9eb98 -r 8a6111c2a84a dyncallback/dyncall_callback.h --- a/dyncallback/dyncall_callback.h Mon Jul 04 00:59:59 2016 +0200 +++ b/dyncallback/dyncall_callback.h Mon Jul 04 01:02:47 2016 +0200 @@ -32,8 +32,7 @@ typedef struct DCCallback DCCallback; -// TODO: return value is the type encoded as a signature char (character of the set [vBcCsSiIjJlLfd]). - +// return value is the type encoded as a signature char (character of the set [vBcCsSiIjJlLfd]). typedef char (DCCallbackHandler)(DCCallback* pcb, DCArgs* args, DCValue* result, void* userdata); #ifdef __cplusplus diff -r f1cc11a9eb98 -r 8a6111c2a84a dyncallback/dyncall_callback_mips.c --- a/dyncallback/dyncall_callback_mips.c Mon Jul 04 00:59:59 2016 +0200 +++ b/dyncallback/dyncall_callback_mips.c Mon Jul 04 01:02:47 2016 +0200 @@ -27,29 +27,28 @@ #include "dyncall_callback.h" #include "dyncall_callback_mips.h" +extern void dcCallbackThunkEntry(); + void dcbInitCallback(DCCallback* pcb, const char* signature, DCCallbackHandler* handler, void* userdata) { - const char* ptr; - char ch; - pcb->handler = handler; pcb->userdata = userdata; } -extern void dcCallbackThunkEntry(); DCCallback* dcbNewCallback(const char* signature, DCCallbackHandler* handler, void* userdata) { + int err; DCCallback* pcb; - int err = dcAllocWX(sizeof(DCCallback), (void**)&pcb); - if (err != 0) return 0; - + err = dcAllocWX(sizeof(DCCallback), (void**)&pcb); + if(err || !pcb) + return 0; dcbInitThunk(&pcb->thunk, dcCallbackThunkEntry); dcbInitCallback(pcb, signature, handler, userdata); - return pcb; } + void dcbFreeCallback(DCCallback* pcb) { dcFreeWX(pcb, sizeof(DCCallback)); @@ -59,4 +58,3 @@ { return pcb->userdata; } -