A list of finalized values ?

From: Xavier.Redon (Xavier.Redon@eudil.fr)
Date: Thu May 06 1999 - 22:36:29 MET DST

From: Xavier.Redon@eudil.fr (Xavier.Redon)
Message-Id: <199905062036.WAA27067@servnx.priv.eudil.fr>
Subject: A list of finalized values ?
To: caml-list@inria.fr
Date: Thu, 6 May 1999 22:36:29 +0200 (MET DST)

I try to build a list of finalized values in C and use it under Caml.
If I use alloc_final with used=0 and max=1, no problem, that works.
But if I try with used=1 and max=1000 the custom top level enter in
a endless loop (presumably in the GC).

There are the sources of an small example :
I must do a very basic error but I had spend a lot of time
seeking it ... If you have a hint send it also to Xavier.Redon@eudil.fr
I'm not sure I'm yet in the mailing list.

type t
val int_list : unit -> t list
val int_convert : t -> int

type entier

type t = entier

external int_list : unit -> entier list = "int_list" ;;
external int_convert : entier -> int = "int_get" ;;

#include <stdio.h>

#include <caml/mlvalues.h>
#include <caml/alloc.h>
#include <caml/memory.h>
#include <caml/fail.h>

void int_free(value integer)
int *temp=(int *)Field(integer,1);
if(temp!=NULL) free(temp);

value int_list(void)
int i;

    int *integer=malloc(sizeof(int));


CAMLreturn result;

value int_get(value integer)
CAMLreturn Val_int(*(int *)Field(integer,1));


 The CAMLxxx macros generate a very long list of warnings when compiled
with -Wall. CAMLreturn is not very safe : try if(cond) CAMLreturn result :-)

This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:22 MET