This message notes some edits I'm making to try and build the Dec2003 Hugs source kit with Unicode under MS-Windows (because I want to try and use HXML toolbox under Hugs). It also describes a problem I'm having with the experimental Unicode support under Windows.

(I'm also thinking these notes might be helpful to anyone else who wants to build Hugs on Windows without using the Unix tools environment.)

Using Microsoft Visual Studio, version 6, and supplied project files:

(1) edit src/msc/options.h to include #define UNICODE_CHARS_1

(2) Change #if STDCALL_SUPPORTED to #ifdef STDCALL_SUPPORTED in:
    connect.h
    input.c
    static.c

(3) Add the following files to the Visual Studio project:
    char.c
    edit.c
    errors.c
    evaluator.c
    goal.c
    machdep.c
    module.c
    observe.c
    opts.c
    script.c
    strutil.c

(4) In version.c, changed the definition of VERSION_STRING to "Hugs-Unicode-20031206, so that this instantiation of Hugs will use a different registry key from the standard version for saving its options.

Copied the resulting executable into the Hugs installation directory as hugs-unicode-20031206.exe (this being the date string in the source kit I was using, obtained from):
http://www.golubovsky.org/software/hugs-patch/test-hugs98-Dec2003.tar.gz
per:
http://haskell.org/pipermail/hugs-users/2003-December/000508.html
http://www.golubovsky.org/software/hugs-patch/hugs_unicode_test.html


...

At this point, I run into a problem that appears to be (obscurely) related to the source changes that relate to Unicode support...

If I start the modified program in the normal way, it appears to start OK.
But if I change *any* option (e.g. :set -q), then stop and restart the program, I get:
ERROR, a closing quote, '"', was expected
FATAL ERROR, Unable to load Prelude
and then the program crashes with an access violation, in module char.c, function freeConsCharTable, line 539:
[[
static void local freeConsCharTable() {
int i, j;


    for (j=1; j<NUM_LEVEL2; j++)
>>> this line:
>>>     if (consCharTable[0][j]!=NULL)
            free(consCharTable[0][j]);
    for (i=1; i<NUM_LEVEL1; i++)
        if (consCharTable[i]!=NULL) {
            for (j=0; j<NUM_LEVEL2; j++)
                if (consCharTable[i][j]!=NULL)
                    free(consCharTable[i][j]);
            free(consCharTable[i]);
        }
]]

The debugger shows that "consCharTable[0]" is null (0). I note that this is new code which is part of the experimental Unicode support.

If I delete the registry key created for the saved parameters, and restart Hugs, basic expressions seem to work fine. (e.g. simple string operations like concatenation were performed OK).

...

The build procedure I've outlined above is essentially the same as one I used to create a version of Hugs with enlarged code storage space, which has been working fine for me.

I'll leave it there, for now.

#g


------------ Graham Klyne For email: http://www.ninebynine.org/#Contact

_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to