Fix segfault in tokenizevarkw

Also added debug flags to CFLAGS and added little testing thing in main.c.
This commit is contained in:
matt 2022-04-02 12:33:43 +08:00
parent e1b1a52921
commit d418404918
3 changed files with 37 additions and 4 deletions

View File

@ -1,7 +1,7 @@
.POSIX:
CC = tcc
CFLAGS = -Wall -Wunsupported -Wwrite-strings
CFLAGS = -Wall -Wunsupported -Wwrite-strings -b -g
OBJ = main.o token.o
all: woody

35
main.c
View File

@ -1,8 +1,41 @@
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "token.h"
/* placeholder testing function before I setup test suite */
static void
test(void)
{
struct tokenstate ts;
ts.tokensz = 8;
ts.tokens = malloc(8 * sizeof(struct token *));
if (ts.tokens == NULL) {
perror("main test");
exit(EXIT_FAILURE);
}
ts.tokens[0] = malloc(1024 * sizeof(struct token));
if (ts.tokens[0] == NULL) {
perror("main test");
exit(EXIT_FAILURE);
}
ts.filename = "<input>";
ts.fh = stdin;
ts.tokenblk = 0;
ts.tokenind = 0;
ts.col = 0;
ts.line = 1;
ts.pos = 0;
tokenize(&ts);
}
int
main(int argc, char *argv[])
{
puts("hello, world");
test();
return 0;
}

View File

@ -150,8 +150,8 @@ tokenizevarkw(struct token *token, struct tokenstate *ts)
}
/* read the var/kw */
for (int i = 0; i < 32 && isalpha(ts->look)
&& isdigit(ts->look); i++) {
for (i = 0; i < 32 && (isalpha(ts->look)
|| isdigit(ts->look)); i++) {
buf[i] = ts->look;
getch(ts);
}