Dropped max string size to 32k to eliminate buffer overflow in case dim section

This commit is contained in:
AIR 2022-07-31 11:59:13 -04:00
parent a6df384fda
commit 51246e082e
4 changed files with 347 additions and 345 deletions

100
mbc4.bas
View File

@ -38,7 +38,7 @@
'********************************** '**********************************
'** AUTO BUILD TRANSLATOR BINARY ** '** AUTO BUILD TRANSLATOR BINARY **
'********************************** '**********************************
$EXECON $EXECON "-g"
'********************** '**********************
@ -108,8 +108,8 @@ This section is used to communicate to-do 's, changes, ideas, suggestions, etc.
------------------------------------------- -------------------------------------------
2022-07-26 Armando Rivera 2022-07-26 Armando Rivera
After a LONG time away.... After a LONG time away....
* Changed max size of szTmp$, Src$, and AbortSrc$ (65535)to avoid potential buffer overflows * Changed max size of szTmp$, Src$, and AbortSrc$ (32768)to avoid potential buffer overflows
* Changed max size of WarnMsg$ (65536) to avoid potential buffer overflow * Changed max size of WarnMsg$ (32768) to avoid potential buffer overflow
* Removed the "register" decorator from EOF function to comply with C++17 standard * Removed the "register" decorator from EOF function to comply with C++17 standard
* The above addressed warnings thrown by C++17, which is the standard on modern Linux. * The above addressed warnings thrown by C++17, which is the standard on modern Linux.
* Removed cdecl/stdcall from "Declare Function" (dynamic linking), since cdecl is the standard on *nix systems * Removed cdecl/stdcall from "Declare Function" (dynamic linking), since cdecl is the standard on *nix systems
@ -653,7 +653,7 @@ END TYPE
'************************************************************** '**************************************************************
CONST VarTypes$ = "%$#!@¦" CONST VarTypes$ = "%$#!@¦"
SET VarTypeLookup[] AS CHAR PTR SET VarTypeLookup[] AS CHAR PTR
"int", "int", "char *", "double", "float", "FILE *", "long double" "int", "char *", "double", "float", "FILE *", "long double"
END SET END SET
'************************************************************** '**************************************************************
TYPE ARGTYPE TYPE ARGTYPE
@ -701,12 +701,12 @@ TYPE VARCODE
VarNo AS INTEGER VarNo AS INTEGER
Method AS INTEGER Method AS INTEGER
IsPtrFlag AS INTEGER IsPtrFlag AS INTEGER
Header$ Header AS STRING
Proto$ Proto AS STRING
Functype$ Functype AS STRING
StaticOut$ StaticOut AS STRING
Token$ Token AS STRING
AsToken$ AsToken AS STRING
END TYPE END TYPE
'************************************************************************* '*************************************************************************
@ -1094,15 +1094,15 @@ END SET
' CODE BEGINS ' CODE BEGINS
'************************************************************************* '*************************************************************************
FUNCTION main(ARGC AS INTEGER, ARGV AS PCHAR PTR) FUNCTION main(ARGC AS INTEGER, ARGV AS PCHAR PTR)
' ** AIR 2022/07/26 changed to 65535 from 2047+1 to avoid buffer overflow ** ' ** AIR 2022/07/26 changed to 32768 from 2047+1 to avoid buffer overflow **
GLOBAL szTmp$ * 65535 'This is a problem, cannot exceed 2047+1 or bad things *WILL* happen. GLOBAL szTmp$ * 32768 'This is a problem, cannot exceed 2047+1 or bad things *WILL* happen.
GLOBAL Src$ * 65535 'This is a problem, cannot exceed 2047+1 or bad things *WILL* happen. GLOBAL Src$ * 32768 'This is a problem, cannot exceed 2047+1 or bad things *WILL* happen.
GLOBAL AbortSrc$ * 65535 'This must be at least the size of Src$ GLOBAL AbortSrc$ * 32768 'This must be at least the size of Src$
' ** AIR 2022/07/26 changed to 65535 from 32767 to avoid buffer overflow ** ' ** AIR 2022/07/26 changed to 32768 from 32767 to avoid buffer overflow **
GLOBAL WarnMsg$ * 65535+1 'This must be MORE than the size of Src$ GLOBAL WarnMsg$ * 32768+1 'This must be MORE than the size of Src$
GLOBAL RmLibs$ * 32767 ' libraries to remove GLOBAL RmLibs$ * 32768 ' libraries to remove
LOCAL bitz as INTEGER ' is OS 32/64 bit LOCAL bitz as INTEGER ' is OS 32/64 bit
ProtoCnt = 0 ' Prototypes counter ProtoCnt = 0 ' Prototypes counter
TranslateSlash = TRUE ' Default TO changing "\" TO "\\" TranslateSlash = TRUE ' Default TO changing "\" TO "\\"
@ -1130,10 +1130,10 @@ FUNCTION main(ARGC AS INTEGER, ARGV AS PCHAR PTR)
IF COMMAND$ = "" THEN IF COMMAND$ = "" THEN
!#if defined (__APPLE__) !#if defined (__APPLE__)
PRINT "MBC4: Ported to Mac OSX by Armando Rivera (c) 2009-2018" PRINT "MBC4: Ported to Mac OSX by Armando Rivera (c) 2009-2022"
!#else !#else
PRINT "MBC4: Based on Linux BCX by Mike Henning (c) 2009" PRINT "MBC4: Based on Linux BCX by Mike Henning (c) 2009"
PRINT "(c) 2009-2018 Armando Rivera with additional code (c) 2009 John Jacques",LF$ PRINT "(c) 2009-2022 Armando Rivera with additional code (c) 2009 John Jacques",LF$
!#endif !#endif
PRINT "Version ", Version$, " Compiled with "; PRINT "Version ", Version$, " Compiled with ";
@ -1205,10 +1205,10 @@ FUNCTION main(ARGC AS INTEGER, ARGV AS PCHAR PTR)
PRINT "MBC Version ", Version$ PRINT "MBC Version ", Version$
!#if defined (__APPLE__) !#if defined (__APPLE__)
IsApple = TRUE IsApple = TRUE
PRINT "MBC4: Ported to Mac OSX by Armando Rivera (c) 2009-2018",LF$ PRINT "MBC4: Ported to Mac OSX by Armando Rivera (c) 2009-2022",LF$
!#else !#else
PRINT "MBC4: Based on Linux BCX by Mike Henning (c) 2009" PRINT "MBC4: Based on Linux BCX by Mike Henning (c) 2009"
PRINT "(c) 2009-2018 Armando Rivera with additional code (c) 2009 John Jacques",LF$ PRINT "(c) 2009-2022 Armando Rivera with additional code (c) 2009 John Jacques",LF$
!#endif !#endif
@ -1739,7 +1739,7 @@ SUB ProcessSetCommand(GS)
CONCAT (lszTmp$, Stk$[i]) CONCAT (lszTmp$, Stk$[i])
NEXT NEXT
IF vt = vt_STRVAR AND lszTmp$ <> "" THEN IF vt = vt_STRVAR AND lszTmp$ <> "" THEN
CONCAT (lszTmp$, "[65535]") CONCAT (lszTmp$, "[32768]")
END IF END IF
IF NOT InFunc THEN IF NOT InFunc THEN
CALL AddGlobal(CVar$, vt, 0,lszTmp$,0,0,0,1) CALL AddGlobal(CVar$, vt, 0,lszTmp$,0,0,0,1)
@ -1759,7 +1759,7 @@ SUB ProcessSetCommand(GS)
DimType$ = REMOVE$(Tipe$,"*") ' *mh - 3/9/09 DimType$ = REMOVE$(Tipe$,"*") ' *mh - 3/9/09
GetTypeInfo(Tipe$, &IsPointer, &id, &vt) GetTypeInfo(Tipe$, &IsPointer, &id, &vt)
IF vt = vt_STRVAR THEN IF vt = vt_STRVAR THEN
CONCAT(DimType$, "[65535]") CONCAT(DimType$, "[32768]")
END IF END IF
IF NOT InFunc THEN IF NOT InFunc THEN
CALL AddGlobal(CVar$, vt, id, DimType$,IsPointer,0,0,1) CALL AddGlobal(CVar$, vt, id, DimType$,IsPointer,0,0,1)
@ -1773,7 +1773,7 @@ SUB ProcessSetCommand(GS)
i++ i++
IF Stk$[i]= "=" THEN j = 1 IF Stk$[i]= "=" THEN j = 1
IF SetString = vt_STRVAR AND j = 1 THEN IF SetString = vt_STRVAR AND j = 1 THEN
FPRINT Outfile,"[65535]="; FPRINT Outfile,"[32768]=";
ELSE ELSE
FPRINT Outfile,Stk$[i]; FPRINT Outfile,Stk$[i];
END IF END IF
@ -2481,7 +2481,7 @@ FUNCTION PrintWriteFormat$(DoWrite)
DIM RAW Stak[128] AS ARGTYPE DIM RAW Stak[128] AS ARGTYPE
DIM RAW Frmat$ DIM RAW Frmat$
DIM RAW Arg$ DIM RAW Arg$
DIM RAW ZZ$*65535 DIM RAW ZZ$
DIM RAW Cast$ DIM RAW Cast$
DIM RAW NewLineFlag = 0 DIM RAW NewLineFlag = 0
DIM RAW Argcount = 0 DIM RAW Argcount = 0
@ -2651,7 +2651,7 @@ SUB EmitInputCode
DIM RAW Frmat$ DIM RAW Frmat$
DIM Stak$[128] DIM Stak$[128]
DIM RAW Y$ DIM RAW Y$
DIM RAW ZZ$*65535 DIM RAW ZZ$*32768
Use_Inputbuffer = TRUE Use_Inputbuffer = TRUE
Use_Scan = TRUE Use_Scan = TRUE
Use_Split = TRUE Use_Split = TRUE
@ -2765,7 +2765,7 @@ SUB EmitFileInputCode
DIM RAW Frmat$ DIM RAW Frmat$
DIM RAW FHandle$ DIM RAW FHandle$
DIM RAW Y$ DIM RAW Y$
DIM RAW ZZ$*65535 DIM RAW ZZ$*32768
DIM Stak$[128] DIM Stak$[128]
Arg$ = "" Arg$ = ""
Frmat$ = "" Frmat$ = ""
@ -2857,14 +2857,14 @@ SUB EmitFileInputCode
VarCnt++ VarCnt++
END SELECT END SELECT
NEXT NEXT
FPRINT Outfile,Scoot$, "AR_fgets_retval=fgets(InputBuffer,65535," ; FHandle$ ; ");" FPRINT Outfile,Scoot$, "AR_fgets_retval=fgets(InputBuffer,32768," ; FHandle$ ; ");"
FPRINT Outfile,Scoot$, "if(InputBuffer[strlen(InputBuffer)-1]== 10)" FPRINT Outfile,Scoot$, "if(InputBuffer[strlen(InputBuffer)-1]== 10)"
FPRINT Outfile,Scoot$, " InputBuffer[strlen(InputBuffer)-1]=0;" FPRINT Outfile,Scoot$, " InputBuffer[strlen(InputBuffer)-1]=0;"
FPRINT Outfile,Scoot$, "ScanError = scan(InputBuffer," + ENC$(Frmat$) + Arg$ + ");\n" FPRINT Outfile,Scoot$, "ScanError = scan(InputBuffer," + ENC$(Frmat$) + Arg$ + ");\n"
FPRINT Outfile,Scoot$, "*InputBuffer=0;" FPRINT Outfile,Scoot$, "*InputBuffer=0;"
END SUB ' EmitFileInputCode END SUB ' EmitFileInputCode
SUB AddFuncs SUB AddFuncs
DIM RAW ZZ$*65535 DIM RAW ZZ$*32768
DIM RAW Last$ DIM RAW Last$
Last$ = "" Last$ = ""
CALL CloseAll CALL CloseAll
@ -6458,7 +6458,7 @@ SUB FuncSubDecs1(s$)
ITERATE ITERATE
ELSE ELSE
IF DataType(Stk$[i-1]) = vt_STRVAR THEN IF DataType(Stk$[i-1]) = vt_STRVAR THEN
Stk$[i-1] = Stk$[i-1] + "[][65535]" Stk$[i-1] = Stk$[i-1] + "[][32768]"
END IF END IF
Stk$[i-1] = "*" + Stk$[i-1] Stk$[i-1] = "*" + Stk$[i-1]
END IF END IF
@ -6656,7 +6656,7 @@ SUB HandleNonsense
NEXT NEXT
END SUB ' HandleNonsense END SUB ' HandleNonsense
SUB ValidVar(v$) SUB ValidVar(v$)
DIM RAW ZZ$*65535 DIM RAW ZZ$*32768
IF NOT isalpha(*v$) AND *v$ <> ASC("_") THEN IF NOT isalpha(*v$) AND *v$ <> ASC("_") THEN
IF NOT iMatchLft(v$, "(*") THEN ' Allow byref format (*A).xxx IF NOT iMatchLft(v$, "(*") THEN ' Allow byref format (*A).xxx
Abort("Invalid String Variable Name") Abort("Invalid String Variable Name")
@ -6813,7 +6813,7 @@ SUB Emit
DIM RAW Keyword$ DIM RAW Keyword$
DIM RAW lszTmp$ DIM RAW lszTmp$
DIM RAW Var1$ DIM RAW Var1$
DIM RAW ZZ$*65535 DIM RAW ZZ$*32768
DIM RAW IsSubOrFuncPtr DIM RAW IsSubOrFuncPtr
DIM RAW dms DIM RAW dms
STATIC NoBreak STATIC NoBreak
@ -7910,7 +7910,7 @@ SUB Emit
IF i = vt_STRLIT OR i = vt_STRVAR THEN IF i = vt_STRLIT OR i = vt_STRVAR THEN
IF i <> vt_STRLIT THEN Stk$[2] = Clean$(Stk$[2]) IF i <> vt_STRLIT THEN Stk$[2] = Clean$(Stk$[2])
FPRINT Outfile,Scoot$,"printf(", ENC$("%s"), ",", Stk$[2], ");" FPRINT Outfile,Scoot$,"printf(", ENC$("%s"), ",", Stk$[2], ");"
FPRINT Outfile,Scoot$,"AR_fgets_retval=fgets(", Clean$(Stk$[3]), ",65535,stdin);" FPRINT Outfile,Scoot$,"AR_fgets_retval=fgets(", Clean$(Stk$[3]), ",32768,stdin);"
FPRINT Outfile,Scoot$,Clean$(Stk$[3]),"[strlen(",Clean$(Stk$[3]),")-1]=0;" FPRINT Outfile,Scoot$,Clean$(Stk$[3]),"[strlen(",Clean$(Stk$[3]),")-1]=0;"
EXIT SELECT EXIT SELECT
END IF END IF
@ -7949,7 +7949,7 @@ SUB Emit
END IF END IF
END IF END IF
FPRINT Outfile,Scoot$, Var$ ; "[0]=0;" FPRINT Outfile,Scoot$, Var$ ; "[0]=0;"
FPRINT Outfile,Scoot$, "AR_fgets_retval=fgets(" ; Var$ ; ",65535,"; Clean$(Stk$[2]) ; ");" FPRINT Outfile,Scoot$, "AR_fgets_retval=fgets(" ; Var$ ; ",32768,"; Clean$(Stk$[2]) ; ");"
FPRINT Outfile,Scoot$, "if(" ; CVar$ ; "[strlen(" ;CVar$ ; ")-1]==10)"; FPRINT Outfile,Scoot$, "if(" ; CVar$ ; "[strlen(" ;CVar$ ; ")-1]==10)";
FPRINT Outfile,CVar$ ; "[strlen(" ; CVar$ ; ")-1]=0;" FPRINT Outfile,CVar$ ; "[strlen(" ; CVar$ ; ")-1]=0;"
IF Var1$ <> "" THEN IF Var1$ <> "" THEN
@ -8655,7 +8655,7 @@ SUB Emit
END IF END IF
END IF END IF
dms++ dms++
CONCAT(ZZ$,",65535") CONCAT(ZZ$,",32768")
END IF END IF
IF InTypeDef THEN IF InTypeDef THEN
IF vt = vt_STRUCT THEN IF vt = vt_STRUCT THEN
@ -8756,7 +8756,7 @@ SUB Emit
IF iMatchWrd(Stk$[Ndx], "string") THEN IF iMatchWrd(Stk$[Ndx], "string") THEN
Ndx-- Ndx--
Stk$[Ndx] = "[" Stk$[Ndx] = "["
Stk$[++Ndx] = "65535" Stk$[++Ndx] = "32768"
Stk$[++Ndx] = "]" Stk$[++Ndx] = "]"
ELSE ELSE
Ndx -= 2 Ndx -= 2
@ -8765,7 +8765,7 @@ SUB Emit
IF (vt = vt_CHAR AND vt1 = vt_STRVAR AND IsSplat = 0) OR vt = vt_CHARPTR THEN IF (vt = vt_CHAR AND vt1 = vt_STRVAR AND IsSplat = 0) OR vt = vt_CHARPTR THEN
Ndx++ Ndx++
Stk$[Ndx] = "[" Stk$[Ndx] = "["
Stk$[++Ndx] = "65535" Stk$[++Ndx] = "32768"
Stk$[++Ndx] = "]" Stk$[++Ndx] = "]"
END IF END IF
END IF END IF
@ -8814,7 +8814,7 @@ SUB Emit
IF vt = vt_STRVAR THEN IF vt = vt_STRVAR THEN
SOF$ = "char" SOF$ = "char"
A++ A++
CONCAT(ZZ$,",65535") CONCAT(ZZ$,",32768")
END IF END IF
IF A <> dms THEN IF A <> dms THEN
Abort("Mismatch in dimensions for " + CVar$ + ", orignally " + STR$(dms) + " found " + STR$(A)) Abort("Mismatch in dimensions for " + CVar$ + ", orignally " + STR$(dms) + " found " + STR$(A))
@ -8963,8 +8963,8 @@ SUB Emit
IF vt = vt_STRVAR THEN IF vt = vt_STRVAR THEN
Stk$[Ndx] = "char" Stk$[Ndx] = "char"
Var$ = Stk$[Ndx] Var$ = Stk$[Ndx]
CONCAT(DimType$, "[65535]") CONCAT(DimType$, "[32768]")
CONCAT(lszTmp$, "[65535]") CONCAT(lszTmp$, "[32768]")
END IF END IF
IF InFunc OR InTypeDef THEN IF InFunc OR InTypeDef THEN
IF IsRegister OR IsAuto THEN IF IsRegister OR IsAuto THEN
@ -9048,8 +9048,8 @@ SUB Emit
NEXT NEXT
lszTmp$ = LTRIM$(Clean$(lszTmp$)) lszTmp$ = LTRIM$(Clean$(lszTmp$))
IF VType = vt_STRVAR THEN 'AND ((Stk$[3+IsVolatile] = "" AND InTypeDef) OR (NOT InTypeDef)) THEN IF VType = vt_STRVAR THEN 'AND ((Stk$[3+IsVolatile] = "" AND InTypeDef) OR (NOT InTypeDef)) THEN
'print lszTmp$ if len(lszTmp$) > 0 then print lszTmp$
IF lszTmp$ <> "[65535]" THEN CONCAT (lszTmp$, "[2048]") IF lszTmp$ <> "[32768]" THEN CONCAT (lszTmp$, "[32768]")
'print lszTmp$ 'print lszTmp$
END IF END IF
END IF END IF
@ -9117,7 +9117,7 @@ SUB Emit
CONCAT (lszTmp$, Stk$[i]) CONCAT (lszTmp$, Stk$[i])
NEXT NEXT
IF VType = vt_STRVAR AND lszTmp$ <> "" THEN IF VType = vt_STRVAR AND lszTmp$ <> "" THEN
CONCAT (lszTmp$, "[65535]") CONCAT (lszTmp$, "[32768]")
END IF END IF
IF IsVolatile THEN IF IsVolatile THEN
CALL AddGlobal(CVar$, VType, 0,lszTmp$,0,0,3,0) CALL AddGlobal(CVar$, VType, 0,lszTmp$,0,0,3,0)
@ -9164,7 +9164,7 @@ SUB Emit
id = 0 id = 0
END IF END IF
IF vt = vt_STRVAR THEN ' AND DimType$ <> "" THEN IF vt = vt_STRVAR THEN ' AND DimType$ <> "" THEN
CONCAT (DimType$, "[65535]") CONCAT (DimType$, "[32768]")
END IF END IF
IF IsVolatile THEN IF IsVolatile THEN
CALL AddGlobal(Var$, vt, id, DimType$, IsPointer,0,4,0) CALL AddGlobal(Var$, vt, id, DimType$, IsPointer,0,4,0)
@ -9227,7 +9227,7 @@ SUB Emit
vt = vt_CHAR vt = vt_CHAR
SOF$ = "char" SOF$ = "char"
dms++ dms++
CONCAT(ZZ$,",65535") CONCAT(ZZ$,",32768")
END IF END IF
IF Use_GenFree THEN IF Use_GenFree THEN
GlobalDynaCnt++ GlobalDynaCnt++
@ -9261,7 +9261,7 @@ SUB Emit
id = 0 id = 0
END IF END IF
IF vt = vt_STRVAR THEN IF vt = vt_STRVAR THEN
CONCAT (DimType$, "[65535]") CONCAT (DimType$, "[32768]")
END IF END IF
IF IsShared THEN IF IsShared THEN
IF IsVolatile THEN IF IsVolatile THEN
@ -10003,7 +10003,7 @@ SUB DeclareVariables
END IF END IF
IF Use_Inputbuffer = TRUE THEN IF Use_Inputbuffer = TRUE THEN
FPRINT Outfile,"char InputBuffer[65535];" FPRINT Outfile,"char InputBuffer[32768];"
END IF END IF
IF Use_Findfirst OR Use_Findnext THEN IF Use_Findfirst OR Use_Findnext THEN
@ -10264,7 +10264,7 @@ SUB GetVarCode(varcode AS VARCODE PTR)
varcode->Proto$ = varcode->Proto$ + "char *, " varcode->Proto$ = varcode->Proto$ + "char *, "
ELSE ELSE
varcode->Header$ = varcode->Header$ + "char " + REMOVE$(Clean$(varcode->Token$), "*") + ", " varcode->Header$ = varcode->Header$ + "char " + REMOVE$(Clean$(varcode->Token$), "*") + ", "
varcode->Proto$ = varcode->Proto$ + "char [][65535], " varcode->Proto$ = varcode->Proto$ + "char [][32768], "
END IF END IF
CASE mt_Opts CASE mt_Opts
varcode->Functype$ = "char *" varcode->Functype$ = "char *"
@ -10362,7 +10362,7 @@ SUB GetVarCode(varcode AS VARCODE PTR)
END SUB ' GetVarCode END SUB ' GetVarCode
SUB AddProtos SUB AddProtos
DIM RAW SaveMain$ DIM RAW SaveMain$
DIM RAW ZZ$*65535 DIM RAW ZZ$*32768
DIM RAW A DIM RAW A
SaveMain$ = "" SaveMain$ = ""
OPEN FileOut$ FOR INPUT AS FP1 OPEN FileOut$ FOR INPUT AS FP1
@ -11512,7 +11512,7 @@ SUB PrintGlobal(A, idx, Storage$, P$, VarName$, VarDim$)
CASE vt_BOOL CASE vt_BOOL
FPRINT Outfile,Storage$;"bool ";VarName$;VarDim$;";" FPRINT Outfile,Storage$;"bool ";VarName$;VarDim$;";"
CASE vt_STRVAR CASE vt_STRVAR
IF VarDim$ = "" THEN VarDim$ = "[65535]" IF VarDim$ = "" THEN VarDim$ = "[32768]"
FPRINT Outfile,Storage$;"char ";P$;VarName$;VarDim$;";" FPRINT Outfile,Storage$;"char ";P$;VarName$;VarDim$;";"
' handle normal ' handle normal
CASE vt_VarMin TO vt_VarMax CASE vt_VarMin TO vt_VarMax

580
mbc4.cc

File diff suppressed because it is too large Load Diff

View File

@ -71,8 +71,8 @@ IF NoRT=TRUE THEN EXIT SUB
FPRINT Outfile,"char *BCX_TmpStr (size_t Bites)" FPRINT Outfile,"char *BCX_TmpStr (size_t Bites)"
FPRINT Outfile,"{" FPRINT Outfile,"{"
FPRINT Outfile," static int StrCnt;" FPRINT Outfile," static int StrCnt;"
FPRINT Outfile," static char *StrFunc[65535];" FPRINT Outfile," static char *StrFunc[32768];"
FPRINT Outfile," StrCnt=(StrCnt + 1) & 65535;" FPRINT Outfile," StrCnt=(StrCnt + 1) & 32768;"
FPRINT Outfile," if(StrFunc[StrCnt]) free (StrFunc[StrCnt]);" FPRINT Outfile," if(StrFunc[StrCnt]) free (StrFunc[StrCnt]);"
FPRINT Outfile," #if defined BCX_MAX_VAR_SIZE" FPRINT Outfile," #if defined BCX_MAX_VAR_SIZE"
FPRINT Outfile," if(Bites*sizeof(char)>BCX_MAX_VAR_SIZE)" FPRINT Outfile," if(Bites*sizeof(char)>BCX_MAX_VAR_SIZE)"
@ -1499,7 +1499,7 @@ IF NoRT=TRUE THEN EXIT SUB
FPRINT Outfile,"{" FPRINT Outfile,"{"
FPRINT Outfile," if(MaxCnt < 1) return -1;" FPRINT Outfile," if(MaxCnt < 1) return -1;"
FPRINT Outfile," int c = 0, cnt=-1, cnt2;" FPRINT Outfile," int c = 0, cnt=-1, cnt2;"
FPRINT Outfile," char A[65535];" FPRINT Outfile," char A[32768];"
FPRINT Outfile," int *intptr = (int *)Array;" FPRINT Outfile," int *intptr = (int *)Array;"
FPRINT Outfile," float *floatptr = (float *)Array;" FPRINT Outfile," float *floatptr = (float *)Array;"
FPRINT Outfile," double *doubleptr = (double *)Array;" FPRINT Outfile," double *doubleptr = (double *)Array;"
@ -1580,7 +1580,7 @@ IF NoRT=TRUE THEN EXIT SUB
FPRINT Outfile," int *intptr;" FPRINT Outfile," int *intptr;"
FPRINT Outfile," float *floatptr;" FPRINT Outfile," float *floatptr;"
FPRINT Outfile," double *doubleptr;" FPRINT Outfile," double *doubleptr;"
FPRINT Outfile," char A[50][65535];" FPRINT Outfile," char A[50][32768];"
FPRINT Outfile," va_list marker;" FPRINT Outfile," va_list marker;"
FPRINT Outfile," c = 0;" FPRINT Outfile," c = 0;"
FPRINT Outfile," d = Split(A,input,"; ENC$(",") ; ");" FPRINT Outfile," d = Split(A,input,"; ENC$(",") ; ");"
@ -1626,7 +1626,7 @@ IF NoRT=TRUE THEN EXIT SUB
FPRINT Outfile,"}\n\n" FPRINT Outfile,"}\n\n"
END IF END IF
IF Use_Split THEN IF Use_Split THEN
FPRINT Outfile,"int Split (char Buf[][65535], char *T, char *Delim, int Flg)" FPRINT Outfile,"int Split (char Buf[][32768], char *T, char *Delim, int Flg)"
FPRINT Outfile,"{" FPRINT Outfile,"{"
FPRINT Outfile," int Begin = 0;" FPRINT Outfile," int Begin = 0;"
FPRINT Outfile," int Count = 0;" FPRINT Outfile," int Count = 0;"

View File

@ -389,7 +389,7 @@ IF NoRT=FALSE THEN
FPRINT Outfile,"int scan (char *input, char *format, ... );" FPRINT Outfile,"int scan (char *input, char *format, ... );"
END IF END IF
IF Use_Split THEN IF Use_Split THEN
FPRINT Outfile,"int Split (char [][65535], char*, char*, int=0);" FPRINT Outfile,"int Split (char [][32768], char*, char*, int=0);"
END IF END IF
IF Use_DSplit THEN IF Use_DSplit THEN
FPRINT Outfile,"int DSplit (PCHAR *, char*, char*, int=0);" FPRINT Outfile,"int DSplit (PCHAR *, char*, char*, int=0);"