| Anonymous | Login | Signup for a new account | 2013-05-18 16:23 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||||
| 0005947 | OCaml | OCaml otherlibs | public | 2013-03-12 18:41 | 2013-03-18 07:19 | ||||||
| Reporter | bvaugon | ||||||||||
| Assigned To | doligez | ||||||||||
| Priority | normal | Severity | minor | Reproducibility | have not tried | ||||||
| Status | assigned | Resolution | open | ||||||||
| Platform | OS | OS Version | |||||||||
| Product Version | 4.00.1 | ||||||||||
| Target Version | Fixed in Version | ||||||||||
| Summary | 0005947: CAMLprim returning void | ||||||||||
| 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. | ||||||||||
| Tags | No tags attached. | ||||||||||
| Attached Files | |||||||||||
Notes |
|
|
(0008990) garrigue (manager) 2013-03-18 07:19 |
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) |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2013-03-12 18:41 | bvaugon | New Issue | |
| 2013-03-17 17:14 | gasche | Assigned To | => doligez |
| 2013-03-17 17:14 | gasche | Status | new => assigned |
| 2013-03-18 07:19 | garrigue | Note Added: 0008990 | |
| Copyright © 2000 - 2011 MantisBT Group |