changeset 120:8a6111c2a84a

- minor callback cleanups
author cslag
date Mon, 04 Jul 2016 01:02:47 +0200
parents f1cc11a9eb98
children f00b1f3da52e
files dyncallback/dyncall_callback.h dyncallback/dyncall_callback_mips.c
diffstat 2 files changed, 8 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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;
 }
-