From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id p78405HN011472 for ; Mon, 8 Aug 2011 06:00:08 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgIEABNfP05V2gB5gWdsb2JhbABCp0oBARYmJYFAAQEFeRALRhQoIROHb7paDoY4BJs4iDQ X-IronPort-AV: E=Sophos;i="4.67,335,1309730400"; d="scan'208";a="104913690" Received: from emailfrontal2.citycable.ch ([85.218.0.121]) by mail4-smtp-sop.national.inria.fr with SMTP; 08 Aug 2011 06:00:07 +0200 X-Alinto-smtpauth-localdomain: Yes Received: from seldon (unknown [85.218.93.111]) (Authenticated sender: guillaume.yziquel@citycable.ch) by emailfrontal2.citycable.ch (Postfix) with ESMTPA id 761AFF0801B; Mon, 8 Aug 2011 06:00:01 +0200 (CEST) Received: from yziquel by seldon with local (Exim 4.72) (envelope-from ) id 1QqGzV-0008Bt-LQ; Mon, 08 Aug 2011 05:59:01 +0200 Date: Mon, 8 Aug 2011 05:59:01 +0200 From: Guillaume Yziquel To: Romain Beauxis Cc: caml-list@inria.fr Message-ID: <20110808035901.GJ29083@localhost> References: <20110808131504.d9137220d4b4401cc3450e5a@mega-nerd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by walapai.inria.fr id p78405HN011472 Subject: Re: [Caml-list] Val_int vs caml_copy_nativeint Le Sunday 07 Aug 2011 à 22:48:08 (-0500), Romain Beauxis a écrit : > 2011/8/7 Erik de Castro Lopo : > > Hi all, > > Hi, > > > I'm writing a C stub function to allow the calling of a C library > > function from ocaml. The return from the stub is a tuple and I'm > > doing this: > > > >    /* Package up the result as a tuple. */ > >    v_response = caml_alloc_tuple (3) ; > > > >    Store_field (v_response, 0, Val_int (width)) ; > >    Store_field (v_response, 1, Val_int (height)) ; > >    Store_field (v_response, 2, caml_copy_string (code)) ; > > > >    CAMLreturn (v_response) ; > > > > The above works now, but didn't work when I was using > > caml_copy_nativeint() instead of Val_int() and I'd like to know > > why. I found it especially confusing because caml_copy_string() > > worked and was obvioulsy the right thing to do. > > Reading very briefly the headers. is seems to me that intnat = value = > long. Could it be that on the arch you're using sizeof(int) < > sizeof(long) ? > > Romain Given that Val_int is Val_long (in mlvalues.h): #define Val_int(x) Val_long(x) it's not an issue with this piece of code. But depending on what "doesn't work" means and on the declarations of width and height, then sizeof(int) < sizeof(long) may explain the issue. -- Guillaume Yziquel