1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
putty-source/unix
Simon Tatham 1547c9c1ec Make dupcat() into a variadic macro.
Up until now, it's been a variadic _function_, whose argument list
consists of 'const char *' ASCIZ strings to concatenate, terminated by
one containing a null pointer. Now, that function is dupcat_fn(), and
it's wrapped by a C99 variadic _macro_ called dupcat(), which
automatically suffixes the null-pointer terminating argument.

This has three benefits. Firstly, it's just less effort at every call
site. Secondly, it protects against the risk of accidentally leaving
off the NULL, causing arbitrary words of stack memory to be
dereferenced as char pointers. And thirdly, it protects against the
more subtle risk of writing a bare 'NULL' as the terminating argument,
instead of casting it explicitly to a pointer. That last one is
necessary because C permits the macro NULL to expand to an integer
constant such as 0, so NULL by itself may not have pointer type, and
worse, it may not be marshalled in a variadic argument list in the
same way as a pointer. (For example, on a 64-bit machine it might only
occupy 32 bits. And yet, on another 64-bit platform, it might work
just fine, so that you don't notice the mistake!)

I was inspired to do this by happening to notice one of those bare
NULL terminators, and thinking I'd better check if there were any
more. Turned out there were quite a few. Now there are none.
2019-10-14 19:42:37 +01:00
..
configure Move the Unix configure script up to the top level. 2014-02-22 18:01:32 +00:00
gtkapp.c Move all extern declarations into header files. 2018-11-03 13:47:29 +00:00
gtkask.c gtkask.c: use dedicated PRNG for initial area choice. 2019-07-23 19:58:48 +01:00
gtkcfg.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcols.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcols.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcomm.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkcompat.h Adopt C99 <stdbool.h>'s true/false. 2018-11-03 13:45:00 +00:00
gtkdlg.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
gtkfont.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
gtkfont.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkmain.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
gtkmisc.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkmisc.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
gtkwin.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
osxlaunch.c osxlaunch: stop setting DYLD_LIBRARY_PATH. 2017-12-20 10:04:02 +00:00
procnet.c Add a /proc/net magic authenticator. 2019-03-31 10:35:10 +01:00
pterm.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
pterm.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
putty.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
putty.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
unix.h Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
ux_x11.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxagentc.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxagentsock.c Close standard handles in watchdog subprocesses. 2018-10-21 10:16:16 +01:00
uxcfg.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxcons.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxfdsock.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxgen.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxgss.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxmisc.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxnet.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxnogtk.c Include the compile-time GTK version in the build info. 2017-02-15 19:32:42 +00:00
uxnoise.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxpeer.c Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
uxpgnt.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxplink.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxpoll.c uxpoll.c: cope with missing #defines in poll.h. 2019-03-26 18:44:19 +00:00
uxprint.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxproxy.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxpterm.c Label random-noise sources with an enum of ids. 2019-01-23 22:36:17 +00:00
uxpty.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxputty.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxsel.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxser.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxserver.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxsftp.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxsftpserver.c Add an autoconf test and workaround for futimes(3). 2019-03-26 18:44:19 +00:00
uxshare.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxsignal.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxstore.c Make dupcat() into a variadic macro. 2019-10-14 19:42:37 +01:00
uxucs.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
uxutils.c Check for auxv.h and hwcap.h before including them. 2019-03-26 19:19:28 +00:00
x11misc.c New array-growing macros: sgrowarray and sgrowarrayn. 2019-02-28 20:15:38 +00:00
x11misc.h Basic support for running under GDK Wayland back end. 2018-05-09 09:21:27 +01:00
xkeysym.c Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
xpmptcfg.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmpterm.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmpucfg.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
xpmputty.c Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00