>From 6373b90fc8f9ab2bfa19a107d44cfad3404faf20 Mon Sep 17 00:00:00 2001 From: Paul Eggert
Date: Sun, 6 Oct 2019 11:58:10 -0700 Subject: [PATCH 2/2] Port better to C++ platforms * data/skeletons/yacc.c (YYPTRDIFF_T, YYPTRDIFF_MAXIMUM): Default to long, not int. (yy_lac_stack_realloc, yy_lac, yytnamerr, yyparse): Avoid casts to YYPTRDIFF_T that were masking the problem. --- TODO | 13 ++++--------- data/skeletons/yacc.c | 12 ++++++------ 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/TODO b/TODO index a5935029..f3f08ce1 100644 --- a/TODO +++ b/TODO @@ -107,15 +107,10 @@ name they have in gcc, clang, etc. Likewise for the complain_* series of functions. * Modernization -Remove some casts made for old compilers, such as Clang++ 3.3 and 3.4 when -compiling yacc.c code: - - YYPTRDIFF_T yysize = (YYPTRDIFF_T) (yyssp - yyss + 1); - - YYPTRDIFF_T yysize_old = - *yytop == yytop_empty ? 0 : (YYPTRDIFF_T) (*yytop - *yybottom + 1); - - YYPTRDIFF_T yysize = (YYPTRDIFF_T) (yyesp - *yyes + 1); +Fix data/skeletons/yacc.c so that it defines YYPTRDIFF_T properly for modern +and older C++ compilers. Currently the code defaults to defining it to +'long' for non-GCC compilers, but it should use the proper C++ magic to +define it to the same type as the C ptrdiff_t type. * Completion Several features are not available in all the backends. diff --git a/data/skeletons/yacc.c b/data/skeletons/yacc.c index 5ef4289e..10708627 100644 --- a/data/skeletons/yacc.c +++ b/data/skeletons/yacc.c @@ -425,9 +425,9 @@ typedef short yytype_int16; # include