Fix REPOSITION-FILE, HISTORY, locked file handle and other problems.
[debian/pforth] / csrc / pf_core.c
index 7abe8c1e4f70619e942ac1970ee7072fd5b62fb7..0564a65b62d89e5b641d293286c95e99c544f5c8 100644 (file)
@@ -53,7 +53,7 @@ ExecToken     gAcceptP_XT;         /* XT of ACCEPT */
 cell_t         gDepthAtColon;\r
 \r
 /* Global Forth variables. */\r
-char         *gVarContext;      /* Points to last name field. */\r
+cell_t          gVarContext;      /* Points to last name field. */\r
 cell_t          gVarState;        /* 1 if compiling. */\r
 cell_t          gVarBase;         /* Numeric Base. */\r
 cell_t          gVarEcho;              /* Echo input. */\r
@@ -87,7 +87,7 @@ static void pfInit( void )
        gCurrentDictionary = NULL;\r
        gNumPrimitives = 0;\r
        gLocalCompiler_XT = 0;\r
-       gVarContext = NULL;   /* Points to last name field. */\r
+       gVarContext = (cell_t)NULL;   /* Points to last name field. */\r
        gVarState = 0;        /* 1 if compiling. */\r
        gVarEcho = 0;       /* Echo input. */\r
        gVarTraceLevel = 0;   /* Trace Level for Inner Interpreter. */\r
@@ -174,7 +174,7 @@ nomem:
 cell_t pfExecIfDefined( const char *CString )\r
 {\r
        int result = 0;\r
-       if( NAME_BASE != NULL)\r
+       if( NAME_BASE != (cell_t)NULL)\r
        {\r
                ExecToken  XT;\r
                if( ffFindC( CString, &XT ) )\r
@@ -235,7 +235,7 @@ PForthDictionary pfCreateDictionary( cell_t HeaderSize, cell_t CodeSize )
                dic->dic_HeaderBase = DIC_ALIGN(dic->dic_HeaderBaseUnaligned);\r
                pfSetMemory( dic->dic_HeaderBase, 0xA5, (ucell_t) HeaderSize);\r
                dic->dic_HeaderLimit = dic->dic_HeaderBase + HeaderSize;\r
-               dic->dic_HeaderPtr.Byte = dic->dic_HeaderBase;\r
+               dic->dic_HeaderPtr = dic->dic_HeaderBase;\r
        }\r
        else\r
        {\r
@@ -371,12 +371,11 @@ cell_t pfIncludeFile( const char *FileName )
        pfCopyMemory( &buffer[4], &FileName[len-numChars], numChars+1 );\r
        CreateDicEntryC( ID_NOOP, buffer, 0 );\r
        \r
-       Result = ffIncludeFile( fid );\r
+       Result = ffIncludeFile( fid ); /* Also close the file. */\r
        \r
 /* Create a dictionary word named ;;;; for FILE? */\r
        CreateDicEntryC( ID_NOOP, ";;;;", 0 );\r
        \r
-       sdCloseFile(fid);\r
        return Result;\r
 }\r
 \r