[gambit-list] Re: Gambit-C 4.0 beta 11

Marc Feeley feeley at IRO.UMontreal.CA
Tue Oct 26 00:34:11 EDT 2004


> I tried this again under VS.NET 2003.  Again, building a project with 
> lib\*.c and gsi\*.c,
> adding <gambit>\include to the include paths.  I also suppressed a few 
> warnings related to coercions.

Could you send me a list of the warnings?  I have already fixed a
bunch of coercion problems between beta 10 and beta 11.

> Here are the error messages:
> 
> c:\Projects\Gambit\gambc40b11\lib\_num.c(52351): fatal error C1071: 
> unexpected end of file found in comment
> 
> 
> I believe the problem is expressed in line 44720 of _num.c.
> Here's that line:
> 
>     ___SET_F64(___F64V2,___F64DIV(___F64V1,___F64UNBOX(___GLO(53,___G__23__23_bignum_2e_inexact_2d_mdigit_2d_base)))) 
> 
> 
> I think what's going on is the ___F64UNBOX() is returning a string that
> starts with '*' so the ___F64DIV expands to a string with '/*' in it.
> 
> Here's the definition of ___F64DIV:
> 
>      #define ___F64DIV(x,y)(x/y)
> 
> Changing this to
> 
>      #define ___F64DIV(x,y)(x/(y))
> 
> ... eliminates the error.  This same problem occurs in two other functions:
> 
>      #define ___F64INV(x)1.0/x
>      #define ___FIXINV(x)___FIX((___FIX(1)/x))
> 
> I added parens around the x's and it compiles now.

Great!  I suspected something like this was going on and I'm glad you
pinpointed the problem.

> After running it, I got a console window and running some sort of
> command line program.  I tried to define factorial and got this
> error when I typed the first ')':
> 
>     Run-Time Check Failure #3 - The variable 'e' is being used without 
> being defined.
>     line 2690 of os_tty.c
> 
> That line is at the end of this function:
> 
>     lineeditor_output_terminal_op_move_abs
> 
> I changed the declaration of e (the unbound variable to be this:
> 
>     ___SCMOBJ e = ___FIX(___NO_ERR);
> 
> and it successfully ran (fact 1000).  I haven't played with it
> further yet.

Nice catch.  Which version of MS VC are you using?  Did you use
any special options to get these error checks?

>  Is there a test suite?

Try "make check".  You may have to install MinGW to get make.
Otherwise look at tests/makefile and do the steps manually.

Marc


More information about the Gambit-list mailing list