Skip to content

Commit 2d059bc

Browse files
authored
Merge pull request #1146 from ksss/segv
Fix SEGV when parse with invalid content
2 parents 365d8e2 + 0500d3a commit 2d059bc

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

ext/rbs_extension/parserstate.c

+2
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ VALUE comment_to_ruby(comment *com, VALUE buffer) {
275275
parserstate *alloc_parser(VALUE buffer, int start_pos, int end_pos, VALUE variables) {
276276
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
277277

278+
StringValue(string);
279+
278280
lexstate *lexer = calloc(1, sizeof(lexstate));
279281
lexer->string = string;
280282
lexer->current.line = 1;

test/rbs/parser_test.rb

+7
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ def test_interface_mixin
5858
end
5959
end
6060

61+
def test_type_error
62+
buffer = RBS::Buffer.new(content: 1, name: nil)
63+
assert_raises TypeError do
64+
RBS::Parser.parse_signature(buffer)
65+
end
66+
end
67+
6168
def test_interface_alias
6269
RBS::Parser.parse_signature(buffer(<<-RBS)).tap do |decls|
6370
interface _Foo[unchecked in A]

0 commit comments

Comments
 (0)