Skip to content

Commit 64aaf09

Browse files
authored
Merge pull request #164 from eed3si9n/wip/buffer2
Fixes crash, take 2
2 parents 8079aed + cdc0977 commit 64aaf09

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

.github/workflows/fuzz.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ name: Fuzz parser
33
# Run this workflow on changes to the external scanner
44
on:
55
workflow_dispatch:
6-
#push:
7-
# paths:
8-
# - src/scanner.c
9-
# - src/stack.h
10-
#pull_request:
11-
# paths:
12-
# - src/scanner.c
13-
# - src/stack.h
6+
push:
7+
paths:
8+
- src/scanner.c
9+
- src/stack.h
10+
pull_request:
11+
paths:
12+
- src/scanner.c
13+
- src/stack.h
1414

1515
jobs:
1616
test:
1717
name: Parser fuzzing
1818
runs-on: ubuntu-latest
1919
steps:
2020
- uses: actions/checkout@v3
21-
- uses: eed3si9n/tree-sitter-fuzz-action@v1
21+
- uses: vigoux/tree-sitter-fuzz-action@v1
2222
with:
2323
language: scala
2424
external-scanner: src/scanner.c

src/scanner.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,18 @@ bool tree_sitter_scala_external_scanner_scan(void *payload, TSLexer *lexer,
144144
lexer->result_symbol = OUTDENT;
145145
stack->last_indentation_size = indentation_size;
146146
stack->last_newline_count = newline_count;
147-
stack->last_column = lexer->get_column(lexer);
147+
if (lexer->eof(lexer)) {
148+
stack->last_column = -1;
149+
} else {
150+
stack->last_column = lexer->get_column(lexer);
151+
}
148152
return true;
149153
}
150154

151155
// Recover newline_count from the outdent reset
152156
if (stack->last_newline_count > 0 &&
153-
lexer->get_column(lexer) == stack->last_column) {
157+
((lexer->eof(lexer) && stack->last_column == -1)
158+
|| lexer->get_column(lexer) == stack->last_column)) {
154159
newline_count += stack->last_newline_count;
155160
}
156161
stack->last_newline_count = 0;

0 commit comments

Comments
 (0)