<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>I'm constantly noticing fixed sized buffers in the Modula-3 code and reinvention of basic data types and algorithms, such as growable arrays. Something seems off, eh?<BR>
 <BR>
Here's the latest:<BR>
 <BR>
 -> linking cm3.exe<BR>c:\\docume~1\\jay\\locals~1\\temp\\cm3\\make-dist\\tmpukymas\\cm3-core-WIN32-NT3<BR>86GNU-d5.5.1\\pkg\\m3back\\NT386GNU\\m3back.lib c:\\docume~1\\jay\\locals~1\\tem<BR>p\\cm3\\make-dist\\tmpukymas\\cm3-core-WIN32-NT386GNU-d5.5.1\\pkg\\m3objfile\\NT<BR>386GNU\\m3objfile.lib c:\\docume~1\\jay\\locals~1\\temp\\cm3\\make-dist\\tmpukym<BR>as\\cm3-core-WIN32-NT386GNU-d5.5.1\\pkg\\m3quake\\NT386GNU\\m3quake.lib c:\\docu<BR>me~1\\jay\\locals~1\\temp\\cm3\\make-dist\\tmpukymas\\cm3-core-WIN32-NT386GNU-d5<BR>.5.1\\pkg\\m3front\\NT386GNU\\m3front.lib c:\\docume~1\\jay\\locals~1\\temp\\cm3<BR><A href="file://\\make-dist\\tmpukymas\\cm3-core-WIN32-NT386GNU-d5.5.1\\pkg\\m3linker\\NT386GNU\">\\make-dist\\tmpukymas\\cm3-core-WIN32-NT386GNU-d5.5.1\\pkg\\m3linker\\NT386GNU\</A><BR>\m3link.lib c:\\docume~1\\jay\\locals~1\\temp\\cm3\\make-dist\\tmpukymas\\cm3-co<BR>re-WIN32-NT386GNU-d5.5.1\\pkg\\m3middle\\NT386GNU\\m3middle.lib c:\\docume~1\\ja<BR>y\\locals~1\\temp\\cm3\\make-dist\\tmpukymas\\cm3-core-WIN32-NT386GNU-d5.5.1\\pk<BR>g\\libm3\\NT386GNU\\m3.lib.sa c:\\docume~1\\jay\\locals~1\\temp\\cm3\\make-dist\<BR>\tmpukymas\\cm3-core-WIN32-NT386GNU-d5.5.1\\pkg\\m3core\\NT386GNU\\m3core.lib.sa<BR> -lcomctl32 -lwsock32 -lnetapi32 -lgdi32 -luser32<BR>
***<BR>*** runtime error:<BR>***    <*ASSERT*> failed.<BR>***    file "..\src\M3ID.m3", line 58<BR>***<BR>
Stack trace:<BR>   FP         PC      Procedure<BR>---------  ---------  -------------------------------<BR> 0x22f198   0x59e9c3  Add + 0x53 in ..\src\M3ID.m3<BR> 0x22f1c8   0x4209cb  Txt2ID + 0x14 in ..\src\M3Build.m3<BR> 0x22f208   0x478f9f  PushText + 0x97 in ..\src\QMachine.m3<BR> 0x22f418   0x47c38f  DoEscape + 0x341 in ..\src\QMachine.m3<BR> 0x22f478   0x476a37  DoCall + 0x568 in ..\src\QMachine.m3<BR> 0x22f558   0x475a49  Eval + 0x1845(!) in ..\src\QMachine.m3<BR> 0x22f578   0x4764ca  CallProc + 0x2b in ..\src\QMachine.m3<BR> 0x22f6e8   0x413717  CallProc + 0x156 in ..\src\Builder.m3<BR> 0x22f758   0x40e96a  BuildProgram + 0x66a in ..\src\Builder.m3<BR> 0x22f788   0x402282  BuildPgm + 0x62 in ..\src\Builder.m3<BR>.........  .........  ... more frames ...<BR>
 <BR>
PROCEDURE Add (x: TEXT;  class: [0..255]): T =<BR>  VAR<BR>    t   : T;<BR>    len := Text.Length (x);<BR>    buf : ARRAY [0..1024] OF CHAR;<BR>  BEGIN<BR>    IF len > NUMBER(buf) THEN<BR>      IO.Put(x);<BR>    END;<BR>    <*ASSERT len <= NUMBER (buf) *><BR>    Text.SetChars (buf, x);<BR>    t := FromStr (buf, len);<BR>    IF (class # 0) THEN classes [t] := class; END;<BR>    IF (ids[t].text = NIL) THEN ids[t].text := x; END;<BR>    RETURN t;<BR>  END Add;<BR><BR><BR>The code is escaping imported .libs in order to write them into a response file, since gcc needs the doubled slashes..<BR>
I'm using a response file BECAUSE I have a long string..<BR>
 <BR>
 - Jay<BR><BR><br /><hr />Helping your favorite cause is as easy as instant messaging. You IM, we give. <a href='http://im.live.com/Messenger/IM/Home/?source=text_hotmail_join' target='_new'>Learn more.</a></body>
</html>