fix the crap string block things
This commit is contained in:
parent
cdf32f3453
commit
dcb3534546
24
src/lt.c
24
src/lt.c
|
@ -522,9 +522,9 @@ char *LT_ReadNumber()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i > (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
if(i >= (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
||||||
{
|
{
|
||||||
str = LT_ReAlloc(str, TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
str = LT_ReAlloc(str, 1 + TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
str[i++] = c;
|
str[i++] = c;
|
||||||
|
@ -586,18 +586,18 @@ void LT_ReadString(LT_Token *tk, char term)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i > (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
if(i >= (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
||||||
{
|
{
|
||||||
str = LT_ReAlloc(str, TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
str = LT_ReAlloc(str, 1 + TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
str = LT_Escaper(str, i++, c);
|
str = LT_Escaper(str, i++, c);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(i > (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
if(i >= (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
||||||
{
|
{
|
||||||
str = LT_ReAlloc(str, TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
str = LT_ReAlloc(str, 1 + TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
str[i++] = c;
|
str[i++] = c;
|
||||||
|
@ -997,9 +997,9 @@ LT_Token LT_GetToken()
|
||||||
|
|
||||||
while(c != EOF && (isalnum(c) || c == '_'))
|
while(c != EOF && (isalnum(c) || c == '_'))
|
||||||
{
|
{
|
||||||
if(i > (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
if(i >= (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
||||||
{
|
{
|
||||||
str = LT_ReAlloc(str, TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
str = LT_ReAlloc(str, 1 + TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
str[i++] = c;
|
str[i++] = c;
|
||||||
|
@ -1036,14 +1036,20 @@ LT_Token LT_GetToken()
|
||||||
char *LT_ReadLiteral()
|
char *LT_ReadLiteral()
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
size_t strBlocks = 1;
|
||||||
int c;
|
int c;
|
||||||
char *str = LT_Alloc(4096);
|
char *str = LT_Alloc(TOKEN_STR_BLOCK_LENGTH);
|
||||||
|
|
||||||
while(LT_TRUE)
|
while(LT_TRUE)
|
||||||
{
|
{
|
||||||
c = fgetc(parseFile);
|
c = fgetc(parseFile);
|
||||||
if(c == '\r' || c == '\n' || c == EOF) break;
|
if(c == '\r' || c == '\n' || c == EOF) break;
|
||||||
|
|
||||||
|
if(i >= (TOKEN_STR_BLOCK_LENGTH * strBlocks))
|
||||||
|
{
|
||||||
|
str = LT_ReAlloc(str, 1 + TOKEN_STR_BLOCK_LENGTH * ++strBlocks);
|
||||||
|
}
|
||||||
|
|
||||||
str[i++] = c;
|
str[i++] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
src/lt.h
2
src/lt.h
|
@ -36,7 +36,7 @@ THE SOFTWARE.
|
||||||
|
|
||||||
// [marrub] This can be changed if you have either a lot of very
|
// [marrub] This can be changed if you have either a lot of very
|
||||||
// long strings, or a lot of very small strings, for optimization.
|
// long strings, or a lot of very small strings, for optimization.
|
||||||
#define TOKEN_STR_BLOCK_LENGTH 128
|
#define TOKEN_STR_BLOCK_LENGTH 4096
|
||||||
|
|
||||||
// [marrub] When using in FFI, remove this from the declarations.
|
// [marrub] When using in FFI, remove this from the declarations.
|
||||||
// Also make sure to redefine this if your platform is not supported.
|
// Also make sure to redefine this if your platform is not supported.
|
||||||
|
|
Reference in New Issue
Block a user