Hi all,
today I got an index out of range trap when I tried to wrap this simple module into a dll:
MODULE OsBoundedBufferDll;
PROCEDURE MaxCountOfEntries* (): INTEGER;
BEGIN RETURN 5
END MaxCountOfEntries;
END OsBoundedBufferDll.
DevLinker.LinkDll
OsBoundedBufferDll.dll := OsBoundedBufferDll # ~
index out of range
DevLinker.Insert [00004466H]
.hint INTEGER -2
.i INTEGER 16
.idx INTEGER 40
.name ARRAY 40 OF SHORTCHAR "MaxCountOfEntries"
DevLinker.WriteExport [000049E4H]
.e DevLinker.Export [012AF510H]
.i INTEGER 1681092118
.name ARRAY 256 OF CHAR "OsBoundedBufferDll.dll" ...
.ni INTEGER 40
.ss ARRAY 256 OF SHORTCHAR "OsBoundedBufferDll.dll" ...
DevLinker.WriteOut [00004DA2H]
In DevLinker there seems to be an upper limit of about 39 for the sum of lengths of module name and exported procedure name. The trap disappeared after I had done a small modification to module DevLinker at the beginning of procedure WriteImport:
IF i > 0 THEN NEW(ntab, 40 * i) END;
modified to
IF i > 0 THEN NEW(ntab, 256 * i) END;
In the future I intend to write a standard software package at the company which will be used by my colleagues. They are mainly hardware engineers but no computer scientists, so it is very important for me to write software with very sound and readable names for procedures, etc. Therefore a limit of about 40 chars is too small for the sum of module name and procedure name. So I would like to kindly ask OMS to remove this limit by allowing e.g. 255 chars for all names as it is partially done already in DevLinker for some names.
Thanks in advance and best regards,
Rainer Neubauer
Received on Mon Feb 18 2008 - 23:25:58 UTC