[comp.sys.xerox] funny error message from lyric compiler

Kevin_Crowston@XV.MIT.EDU (02/09/88)

I'm trying to convert a Koto application to Lyric and in
the processing, trying to compile a function with a PROG
and a bunch of GO's (so much for GOTOless programming).
The function compiles fine under Koto, and I think it
also works with the old compiler.  With the new compiler,
however (that is, CL:COMPILE-FILE), I get an incomprehensible
error message (paraphrased):

Assert failed:  uncertainty size went negative.

I'm pretty sure the error has something to do with the PROG, 
since I took nearly everything else out of the functions, but
maybe I'm just getting hung up on gotos...

Anyway, does anyone know what the error message means?
Alternately, am I doing something wrong with the PROG?  I'm
using the InterLisp package, if there's a difference between
CL:PROG and IL:PROG, but I don't think there is...

The functions used follow:

(Outgoing.Do.Command Command ExpectedReply ErrorMessage)
    Sends the command and waits for the given reply;
    if it gets it, it returns NIL;
    if it gets anything else or nothing at all, it
    prints the given error message, sets Status to T
    and returns T.
    Uses InStream, OutStream, Status and Dialogue as SPECVARS.

(SMTP.Handle.Reply InStream ExpectedReply ErrorMessage)
    Waits for the given reply on InStream.
    If it gets it, it returns NIL;
    if it gets anything else or nothing at all, it
    prints the given error message, sets Status to T
    and returns T.
    Uses Status and Dialogue as SPECVARS.


The function that won't compile:

(LAMBDA (InStream OutStream Host From Receivers Parse)

    (DECLARE (SPECVARS Service Dialogue))

    (* ; Edited  5-Feb-88 18:08 by kgc)

    (PROG
        ((Count 0)
         Status)

        (* * Wait for the server's opening message)
        (if (SMTP.Handle.Reply InStream "2"
             (CONCAT "No server on recipient's host " Host))
         then (GO FINISH))

        (* * say hello)
        (if (Outgoing.Do.Command
             (CONCAT "HELO " SMTP.SiteName) "2"
             (CONCAT
          "No response from server on recipient's host"  Host))
         then (GO FINISH))

        (* * Send the From line)
        (if (Outgoing.Do.Command
             (CONCAT "MAIL FROM:<"
              (SMTP.ARPA.Address From) ">")
             "2" "From line rejected")
         then (GO DONE))

        (* * Send the destinations)
        (if (ZEROP
             (for Person in Receivers count
              (NOT (Outgoing.Do.Command
                    (CONCAT "RCPT TO:<"
                     (SMTP.ARPA.Address Person) ">")
                     "2"
                    (CONCAT "To line rejected by " Host))))) 
         then (printout Dialogue 
        "None of the recipients were accepted by the host" T)
          (GO DONE))

        (* * Send the message itself)
        (if (Outgoing.Do.Command "DATA" "3" 
             "Error sending message body")
         then (GO DONE))
        (SMTP.Header Parse OutStream Host)
        (SMTP.Body Parse OutStream)
        (SMTP.Send OutStream "
.")
        (if (SMTP.Handle.Reply InStream "2" 
             "Error sending message")
         then (GO DONE))

        (* * That's it)

    DONE
        (Outgoing.Do.Command "QUIT" "2"
         "QUIT command rejected")

    FINISH
        (* * Close the connection)
        (NLSETQ
         (PROGN (CLOSEF? InStream)
                (CLOSEF? OutStream)))

        (* * Tell the world)
        (Monitor.Print Service
         (if Status
          then "Error in delivery"
          else "Delivery okay"))

        (RETURN (NOT Status))))

Kevin Crowston
MIT Sloan School