From 7a7a1413755c74b416295b13fe90eef3bffa7345 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: 2008年2月11日 11:32:12 -0700 Subject: [PATCH] Fix regression in command line -D option, from 2006年08月25日. * m4/m4private.h (m4_symbol_value_create): Delete fast accessor. * m4/m4module.h: Fix typo. * m4/symtab.c (m4_symbol_value_create): Prime the maximum number of arguments. * tests/macros.at (Command line define): Enhance test. * tests/others.at (nul character): Enhance test. * tests/null.m4: Likewise. * tests/null.out: Likewise. Signed-off-by: Eric Blake --- ChangeLog | 10 ++++++++++ m4/m4module.h | 2 +- m4/m4private.h | 3 +-- m4/symtab.c | 4 +++- tests/macros.at | 9 +++++++++ tests/null.m4 | Bin 3998 -> 6508 bytes tests/null.out | Bin 338 -> 400 bytes tests/others.at | 10 ++++++++-- 8 files changed, 32 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index faf80ebf..d9b01756 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2008年02月11日 Eric Blake + Fix regression in command line -D option, from 2006年08月25日. + * m4/m4private.h (m4_symbol_value_create): Delete fast accessor. + * m4/m4module.h: Fix typo. + * m4/symtab.c (m4_symbol_value_create): Prime the maximum number + of arguments. + * tests/macros.at (Command line define): Enhance test. + * tests/others.at (nul character): Enhance test. + * tests/null.m4: Likewise. + * tests/null.out: Likewise. + Use gnulib's git-merge-changelog driver when available. * .gitattributes: Add merge attributes for ChangeLog. * bootstrap: Install driver, if not already present. diff --git a/m4/m4module.h b/m4/m4module.h index bdb31a3b..5f144be2 100644 --- a/m4/m4module.h +++ b/m4/m4module.h @@ -67,7 +67,7 @@ struct m4_builtin const char * name; /* name found by builtin, printed by dumpdef */ int flags; /* bitwise OR of M4_BUILTIN_* bits */ size_t min_args; /* 0-based minimum number of arguments */ - /* max arguments, UINT_MAX if unlimited; must be>= min_args */ + /* max arguments, SIZE_MAX if unlimited; must be>= min_args */ size_t max_args; }; diff --git a/m4/m4private.h b/m4/m4private.h index 28ac8674..77590f38 100644 --- a/m4/m4private.h +++ b/m4/m4private.h @@ -330,8 +330,7 @@ extern void m4__push_arg_quote (m4 *, m4_obstack *, m4_macro_args *, # define m4_get_symbol_value(S) ((S)->value) # define m4_set_symbol_value(S, V) ((S)->value = (V)) -# define m4_symbol_value_create() xzalloc (sizeof (m4_symbol_value)) -/* m4_symbol_value_delete is too complex for a simple macro. */ +/* m4_symbol_value_{create,delete} are too complex for a simple macro. */ # define m4_is_symbol_value_text(V) ((V)->type == M4_SYMBOL_TEXT) # define m4_is_symbol_value_func(V) ((V)->type == M4_SYMBOL_FUNC) diff --git a/m4/symtab.c b/m4/symtab.c index 0d2055ed..f302fe8b 100644 --- a/m4/symtab.c +++ b/m4/symtab.c @@ -674,7 +674,9 @@ m4_get_symbol_traced (m4_symbol *symbol) m4_symbol_value * m4_symbol_value_create (void) { - return xzalloc (sizeof (m4_symbol_value)); + m4_symbol_value *value = xzalloc (sizeof (m4_symbol_value)); + VALUE_MAX_ARGS (value) = SIZE_MAX; + return value; } #undef m4_symbol_value_groks_macro diff --git a/tests/macros.at b/tests/macros.at index 3d743562..d0dd7e13 100644 --- a/tests/macros.at +++ b/tests/macros.at @@ -140,6 +140,15 @@ AT_CHECK_M4([-Ufoo in -Dfoo=bar in], [0], [[foo bar ]]) +dnl Test macro arguments defined via -D +AT_DATA([in], [[-foo-foo(1)-foo(1,2)- +-bar-bar(1)-bar(1,2)- +]]) +AT_CHECK_M4([-Dfoo -Dbar='$@' in], [0], +[[---- +--1-1,2- +]]) + AT_CLEANUP diff --git a/tests/null.m4 b/tests/null.m4 index e6e1816e42f3472db33906c157cc0bf132aa93e7..2fa38dd95dfdd9d8101da4db5c5e01a458452920 100644 GIT binary patch literal 6508 zcmcIpZFAc;64qz_3bgeN<&32{xa~;|ad8#x$;>5b<7dnb-3uuak}xi-76fhu-`}$f zfRsqeNt`q@F+p&#SnSKQyU;h{?M^jfqY5dkY-}US=VC2)>7CL>=t{hL_aCv|s5xe%3%Y;wENi>>2k_Gin$Oc_*HbRKIoUYkwvlEfi2EGUTqKvX%lMqd|Dh;EnPx`A6sgU2 zs@jV8@1MPYFKl`%MWsb*wk@CPLZnp=z1~S9YNPWulcaZNsb7?VK>{sVX5Fg7s%ixu zmTiW!@1YC>OwBa3q>vqRVs@E!w0fmT5TmPJ3JCg{j$Yr zKY7&$He+{t!gi=zSvgUz~R<=fk}s{_vv|ku@fsl*vZ{FzWz`0zvTSBbKvoe(V6CC>T_^@N9rOv0A0sYpYJNiH}9g- zFBqW%lQUl!k8!DU53s0KQNoXy1g++b!Y*pvF*03Q0$_3{CY+My2M=hJ9C8ITvrp69 z0MD6KL&|{DdA^Z*&J$=Y@pG|DFuZXRx77hjNK9Ai4hCZc1`a+B!Hk^_{H_!N#8Ac} z396z`WhV@PxQCV|P9Jh7;|PI$ElsiayKv$;w2o8vG&45ngmE6B9_UpXQyW#;RTM_Z zlVOgP2?vFrM!jPO4q5=Fnyf??o(c_X+KK|d5sk$T+o>q~RaVk~CU@u;_(e$=#bJ+m z!eVa3*MHpH{PWMReS#e)Mv1td7RZJD=~#VjcSuD?neFM!27)0NHrk*D7>dRgd{H?t zYHFFOjdBTbntn=)uTVi4m2tLlx;{9?$(^S-{j^Jwwq{UHcaOLuSf%bVk{{jz)iDfxq+FIX~b%j{GgPSFUM71i?`OfyLfoVEO#sr1ifr zkMeP?@1)BMy&8`5cKN*7mup=hM2-uq=}Hp$aVY10MTE064lLPTR$fBbLpXV2&w9T|F9#JB=8&v#>P7Gcy|3!q%+;v-#u}Z_(AL<2f)&2sghe>z^dcm9g!UzdOz^R2`@jj z8d)*yKlWh1Xi6o2r~i&+{ebTd>_ZNNEHX+VY@;h>WM-j6b}PaYH1ドルuE=YLxTpQw;6D3&lWoodob24yK(c%Y?iJ+XymZ0!U67D-6FcXD@ zUpep)q`k-Q5?l>%ltOXklDV6@$s|hm8iE>jT-f;w!11L?(6|<#+siw-8?-q=+*9`g z@O_!y0IkBP!>EIhI{-MkS_?SIw~%h#=+0v)-ttx4)U9Teghhh_^q{m0IB(?xUx|km zV-vcn6Pr;@#1$h24%b@E3Ah8ZswvcTHQ;V9>4vS(+IMoaENA8)eL}VykYdHdpx+NP;^V4(y?q* z6cc$mjF`aS)jfkKJ?$+kMW=G4Y6vnsUg$XxCPSB%l8H4@M2tw_=uxzp11gUMyNedP zLdt5*aP*Y4gM?=t7oJ7Lz0cStDYS`*w;-8_Tasm)s!@?_(=kf2tyT@`R5pz?&PF~N z)hKBW0*o*u(u4I!dty0AzAvOn2!*jtR!=H*)&7y`3e!YSS`EEe)hyh)1221ドルW&aYb z%O?sbE`z>5hb=CLZXk;6IDgj+dMPwRlepmvto09z4dDv!LKe&7DzO??P1b&k66lEY X=!<*kgoikjf2@*tm+uaw@r9v*gw-7y diff --git a/tests/null.out b/tests/null.out index 6e8a114c8eca2c8678d95bd97a16e65a4e73fbc2..c42e03c1d290b86eaadc6e9e38cac6bd77b70307 100644 GIT binary patch delta 101 zcmcb_G=X`77Ng!otpx6r%(B#?5-SB=2HlCB*=~s?#idEbK)xP>o`SBfLSj;~g07-2 uNSZ;Ht02E1B{j`TAwQd|ptLvx#x6=tPpv4hQZQ0bR4`Bgs+`Qp=m`MklN=BL delta 20 ccmbQhe2Hm-);p_F(h?08P6Fz5oCK diff --git a/tests/others.at b/tests/others.at index bb6254a4..0b58c29b 100644 --- a/tests/others.at +++ b/tests/others.at @@ -1,5 +1,5 @@ # Hand crafted tests for GNU M4. -*- Autotest -*- -# Copyright (C) 2001, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2001, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is part of GNU M4. # @@ -321,7 +321,13 @@ AT_SETUP([nul character]) cp "$abs_srcdir/null.out" expout cp "$abs_srcdir/null.err" experr -AT_CHECK_M4(["$abs_srcdir/null.m4"], [0], [expout], [experr]) +dnl all but m4exit +AT_CHECK_M4([-Dm4exit "$abs_srcdir/null.m4"], [0], [expout], [experr]) + +dnl just m4exit +AT_CHECK_M4(["$abs_srcdir/null.m4"], [2], +[[# This file tests m4 behavior on NUL bytes. +]]) AT_CLEANUP -- 2.50.1

AltStyle によって変換されたページ (->オリジナル) /