Hi Have you got a fix for this in imsg.c?
I find it hard to understand why NetBSD have done something so patently stupid but I suppose since they have we will have to handle it, at least in the portable tmux. On Tue, Feb 23, 2010 at 01:33:32PM +0300, Alexander Nasonov wrote: > Hi Nicholas, > I don't think that variable size array inside a union is allowed by C99. I > don't have a copy of the standard but N1256 says: > > (in 6.7.2.1 Structure and union specifiers) > "A member of a structure or union may have any object type other than a > variably modified type." > > "variably modified type" is defined in 6.7.5 Declarators: > > "A full declarator is a declarator that is not part of another declarator. > The end of a full declarator is > a sequence point. If, in the nested sequence of declarators in a full > declarator, there is a declarator > specifying a variable length array type, the type specified by the full > declarator is said to be variably > modified. Furthermore, any type derived by declarator type derivation from a > variably modified type > is itself variably modified." > > I did a quick test using online Comeau C99 compiler and it reports an error: > > int main(int argc, char* argv[]) > { > union {int a; char b[argc]; } u; > } > > "ComeauTest.c", line 3: error: expression must have a constant value > union {int a; char b[argc]; } u; > ^ > > "ComeauTest.c", line 3: warning: variable "u" was declared but never > referenced > union {int a; char b[argc]; } u; > ^ > > 1 error detected in the compilation of "ComeauTest.c". > > Alex > > > 23.02.10, 00:11, "Nicholas Marriott" <nicholas.marri...@gmail.com>: > > > Hi > > > > Did you try building with -std=c99? > > > > > > On Mon, Feb 22, 2010 at 11:39:44PM +0000, Alexander Nasonov wrote: > > > After being subscribed to this list for a while, the list is > > > apparently alive. Seems like my message was sent at the worng time. > > > > > > Nikolas, > > > What's your view on using a buffer with a size known only at runtime? > > > > > > Thanks, > > > Alex > > > > > > Alexander Nasonov wrote: > > > > Hi, > > > > > > > > CMSG_SPACE(sizeof(int)) does not return a constant on NetBSD. > > > > If you compile tmux with the Intel C++ compiler 11.1, the program > > > > will crash in msgbuf_write because the compiler can't deduce a size > > > > of buf and sets it to 0: > > > > > > > > union { > > > > struct cmsghdr hdr; > > > > char buf[CMSG_SPACE(sizeof(int))]; > > > > } cmsgbuf; > > > > > > > > and the result of sizeof(buf) is 0. This leads to a crash. > > > > > > > > Any chance to get this fixed in the next version? > > > > > > > > Thanks, > > > > Alex > > > > > > > > PS see this commit message in NetBSD repository for more information > > about CMSG_SPACE: > > > > > > > > > > http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/socket.h?only_with_tag=MAIN#rev1.51 > > > > > > > > Revision 1.51 / (download) - annotate - [select for diffs], Thu Mar 2 > > 07:41:50 2000 UTC (9 years, 8 months ago) by itojun > > > > Branch: MAIN > > > > Changes since 1.50: +10 -4 lines > > > > Diff to previous 1.50 (colored) > > > > > > > > make CMSG_ALIGN always synchronize with kernel's idea of ALIGNBYTES. > > > > ancillary data alignment will be ALIGNBYTES, not sizeof(long) - 1, > > from now. > > > > > > > > CMSG_xx will NOT resolve into constant. if you use CMSG_xx to allocate > > > > arrays, you'll lose. > > > > > > > > bump shlib minor for libc. > > > > > > > > NOTE: if you are on top of arch with ALIGNBYTES != sizeof(long) - 1, > > > > you need to recompile IPv6-related binaries. there is no way to > > guarantee > > > > backward compat in this aspect. sorry for this. this should be the > > last > > > > backward compat breakage for IPv6-related ancillary data manipulation. > > > > (we still have PR 9516 for unix-domain sockets...) > > > > > > > > > > ------------------------------------------------------------------------------ > > > > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > > 30-Day > > > > trial. Simplify your report design, integration and deployment - and > > focus on > > > > what you do best, core application coding. Discover what's new with > > > > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > > _______________________________________________ > > > > tmux-users mailing list > > > > tmux-users@lists.sourceforge.net > > > > https://lists.sourceforge.net/lists/listinfo/tmux-users > > > > > > > > > > > ------------------------------------------------------------------------------ > > > Download Intel?? Parallel Studio Eval > > > Try the new software tools for yourself. Speed compiling, find bugs > > > proactively, and fine-tune applications for parallel performance. > > > See why Intel Parallel Studio got high marks during beta. > > > http://p.sf.net/sfu/intel-sw-dev > > > _______________________________________________ > > > tmux-users mailing list > > > tmux-users@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/tmux-users > > > > > > -- > Alexander Nasonov ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users