]> matita.cs.unibo.it Git - helm.git/commitdiff
* some fixes so to make Ocaml garbage collector happy
authorLuca Padovani <luca.padovani@unito.it>
Fri, 21 Feb 2003 13:20:34 +0000 (13:20 +0000)
committerLuca Padovani <luca.padovani@unito.it>
Fri, 21 Feb 2003 13:20:34 +0000 (13:20 +0000)
* there is still the problem that the assert macro is not recognized (?)

helm/DEVEL/mathml_editor/ocaml/ml_mathml_editor.c

index bbe8884353d7d70a4013de14b8aa157ec74f7d32..7dd6bd050f21ad5948159f5c1202752b6f647e90 100644 (file)
@@ -2,11 +2,15 @@
 #include <caml/memory.h>
 #include <caml/custom.h>
 #include <caml/callback.h>
+#include <assert.h>
 
 #include "mlgdomevalue.h"
 
 #include "c_mathml_editor.h"
 
+#undef assert
+#define assert(x) {}
+
 typedef struct
 {
   Editor* c_editor;
@@ -16,7 +20,7 @@ typedef struct
 ml_Editor*
 Editor_val(value v)
 {
-  ml_Editor* editor = (ml_Editor*) Data_custom_val(v);
+  ml_Editor* editor = *((ml_Editor**) Data_custom_val(v));
   assert(editor != NULL);
   return editor;
 }
@@ -29,6 +33,7 @@ ml_mathml_editor_finalize(value v)
 
   remove_global_root(&editor->callback);
   c_mathml_editor_destroy(editor->c_editor);
+  free(editor);
 }
 
 void
@@ -55,8 +60,9 @@ ml_mathml_editor_new(value dictionary,
     custom_deserialize_default
   };
   
-  value v = alloc_custom(&ops, sizeof(ml_Editor), 0, 1);
-  ml_Editor* ml_editor = (ml_Editor*) Data_custom_val(v);
+  value v = alloc_custom(&ops, sizeof(ml_Editor*), 0, 1);
+  ml_Editor** ml_editor_ref = (ml_Editor**) Data_custom_val(v);
+  ml_Editor* ml_editor = *ml_editor_ref = malloc(sizeof(ml_Editor));
   ml_editor->c_editor = c_mathml_editor_new(Document_val(dictionary),
                                            Document_val(tml_mml),
                                            Document_val(tml_tex),