-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug: Parser.parse(string)
fails if the string length is >=
than the buffer size
#199
Comments
>=
than the default buffer sizeParser.parse(string)
fails if the string length is >=
than the default buffer size
Parser.parse(string)
fails if the string length is >=
than the default buffer sizeParser.parse(string)
fails if the string length is >=
than the buffer size
const defaultBufferSize = 32 * 1024;
const sourceCode = ''.padStart(defaultBufferSize, ' ');
const tree = parser.parse(source, undefined, { bufferSize: defaultBufferSize + 1 }); // --> Not an error anymore Might be worth putting a note somewhere about this in the readme though. Edit: thanks @connor4312 |
We are encountering this bug as well (dodona-edu/dolos#1544), it took a while to find the cause because of the error message. This seems to be a new problem (with the new NAPI?) Maybe it is a good idea to improve the error message here by adding a manual check if the buffer size is enough? Or event prevent this from happening by increasing the buffer size if needed. |
Hit this as well -- seems like the bufferSize needs to be |
The buffer size should not affect the behavior - it should just control how much copying takes place. This is a really bad bug, it must have been introduced with the NAPI conversion. |
Trying to debug |
Caused by annoying limitation of Node-API where you can't create a reference to a String. Fixes tree-sitter#199
Caused by annoying limitation of Node-API where you can't create a reference to a String. Fixes tree-sitter#199
In the
README
, it suggests you can pass a string to parse:However if you pass a string longer than the default buffer size, parsing will fail with
Error: Invalid Argument
tree-sitter@0.21.1/node_modules/tree-sitter/index.js:361 ? parse.call( ^ Error: Invalid argument at Parser.parse (tree-sitter@0.21.1/node_modules/tree-sitter/index.js:361:13)
Possible Solutions
Some ideas to improve the behavior:
Parser.prototype.parse
's callback for strings be limited to buffer size:CallbackInput::Read
, throw an error with a clearer error message if the returned value from the callback has length >= buffer sizeThe text was updated successfully, but these errors were encountered: