From 496ddbc275049fbfe2ab1e320903dab0beec0fd3 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Tue, 1 May 2018 04:41:10 +0000 Subject: LIST_HEAD as a local variable is a C99ism. Address of a variable whose storage duration is `auto` is _not_ a compile time constant, according to ISO 9899 section 6.4. LIST_HEAD takes such thing. You can't use it to declare local variables. Interestingly, address of a static variable _is_ a compile time constant. So a declaration like `static LIST_HEAD..` is completely legal even in C90. In C99 and newer, this is not a constraint violation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63312 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'io.c') diff --git a/io.c b/io.c index c0457731d0..6a0d7114d2 100644 --- a/io.c +++ b/io.c @@ -4670,7 +4670,8 @@ io_close_fptr(VALUE io) rb_io_t *fptr; VALUE write_io; rb_io_t *write_fptr; - LIST_HEAD(busy); + struct list_head busy; + busy.n.next = busy.n.prev = &busy.n; write_io = GetWriteIO(io); if (io != write_io) { -- cgit v1.2.3