You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 5947 Reporter: bvaugon Assigned to:@damiendoligez Status: resolved (set by @damiendoligez on 2014-07-30T11:49:36Z) Resolution: suspended Priority: normal Severity: minor Version: 4.00.1 Category: otherlibs Monitored by:@gasche
Bug description
Some C primitives of the OCaml otherlibs runtime returns void instead of ().
Some of them are declared "external" in some .ml files.
Obviously, it could cause a "Segmentation fault" if they are called from OCaml.
IIRC, the CAMLprim attribute on tk_error is to overcome restrictions on dependencies between DLLs on windows.
Namely other libraries, such as LablGL, need to access some utility functions from LablTk, and if they are not correctly flagged they are not avilable outside of the DLL.
(The maybe a better name that CAMLprim to do that, but I didn't check; actually CAMLprim is only used to register primitives in the byterun directory)
About tk_error, as far as I know you are supposed to use CAMLexport rather than CAMLprim in that case. This will need to be tested.
About the others, we need to decide if they are like tk_error or if they are really primitives, in which case they must return "value" rather than "void".
Original bug ID: 5947
Reporter: bvaugon
Assigned to: @damiendoligez
Status: resolved (set by @damiendoligez on 2014-07-30T11:49:36Z)
Resolution: suspended
Priority: normal
Severity: minor
Version: 4.00.1
Category: otherlibs
Monitored by: @gasche
Bug description
Some C primitives of the OCaml otherlibs runtime returns void instead of ().
Some of them are declared "external" in some .ml files.
Obviously, it could cause a "Segmentation fault" if they are called from OCaml.
Steps to reproduce
To search these invalid functions, run:
$ grep -RIni 'CAMLprim void' otherlibs
otherlibs/labltk/support/cltkImg.c:78:CAMLprim void
otherlibs/labltk/support/cltkImg.c:112:CAMLprim void camltk_setimgdata_bytecode(argv,argn)
otherlibs/labltk/support/cltkCaml.c:66:CAMLprim void tk_error(char *errmsg)
Additional information
I think that "tk_error" is not an OCaml primitive, so you may just have to remove the CAMLprim attribute.
Functions camltk_setimgdata_bytecode and camltk_setimg_native are exported, so you just have to change signature and to return Val_unit.
The text was updated successfully, but these errors were encountered: