From 10f00f8c1c844480146a251bff9c19f8ed3279a7 Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Fri, 14 Jun 2019 23:21:37 +0200 Subject: [PATCH] [MSI] Fix regression CORE-14646 Pressing Next-button in setup of "1C Enterprise (training version) 8.3.10.2252" did not have any effect anymore. Setup could not be completed anymore. The regression was introduced to ros by 0.4.8-dev-739-g f8b992f2d31aaea06dd6a360ad19165d56c331dc and was confirmed being a Wine-regression in https://bugs.winehq.org/show_bug.cgi?id=45445 Thanks to Fabian Maurer for communicating to Wine and thanks to Thomas Faber for regenerating cond.tab.c from the fixed source file cond.y using BISON. I also committed the same fix to 0.4.12-RC-32-g152ee20. --- dll/win32/msi/cond.tab.c | 245 +++++++++++++++++++++------------------ dll/win32/msi/cond.y | 2 +- 2 files changed, 133 insertions(+), 114 deletions(-) diff --git a/dll/win32/msi/cond.tab.c b/dll/win32/msi/cond.tab.c index 65c56bdc763..2ea550c96a8 100644 --- a/dll/win32/msi/cond.tab.c +++ b/dll/win32/msi/cond.tab.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0. */ +/* A Bison parser, made by GNU Bison 3.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0" +#define YYBISON_VERSION "3.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -186,11 +186,11 @@ static void value_free( struct value val ) #line 188 "cond.tab.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -202,10 +202,7 @@ static void value_free( struct value val ) # define YYERROR_VERBOSE 0 #endif -/* In a future release of Bison, this section will be replaced - by #include "cond.tab.h". */ -#ifndef YY_COND_E_REACTOSSYNC_GCC_DLL_WIN32_MSI_COND_TAB_H_INCLUDED -# define YY_COND_E_REACTOSSYNC_GCC_DLL_WIN32_MSI_COND_TAB_H_INCLUDED + /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -262,7 +259,7 @@ extern int cond_debug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 122 "cond.y" /* yacc.c:355 */ @@ -273,8 +270,10 @@ union YYSTYPE INT operator; BOOL bool; -#line 277 "cond.tab.c" /* yacc.c:355 */ +#line 274 "cond.tab.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -283,11 +282,11 @@ union YYSTYPE int cond_parse (COND_input *info); -#endif /* !YY_COND_E_REACTOSSYNC_GCC_DLL_WIN32_MSI_COND_TAB_H_INCLUDED */ + /* Copy the second part of user declarations. */ -#line 291 "cond.tab.c" /* yacc.c:358 */ +#line 290 "cond.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -308,13 +307,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short int yytype_uint16; +typedef unsigned short yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short int yytype_int16; +typedef short yytype_int16; #endif #ifndef YYSIZE_T @@ -326,7 +325,7 @@ typedef short int yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif @@ -344,11 +343,30 @@ typedef short int yytype_int16; # endif #endif -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif @@ -359,7 +377,7 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -527,7 +545,7 @@ union yyalloc #define YYMAXUTOK 295 #define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ @@ -591,7 +609,7 @@ static const char *const yytname[] = "COND_QUESTION", "COND_AMPER", "COND_EXCLAM", "COND_IDENT", "COND_NUMBER", "COND_LITER", "COND_ERROR", "$accept", "condition", "expression", "boolean_term", "boolean_factor", "operator", "value", - "identifier", YY_NULL + "identifier", YY_NULLPTR }; #endif @@ -845,7 +863,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, COND_input *info) { - unsigned long int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -994,11 +1012,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1055,7 +1073,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -1071,6 +1089,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1281,7 +1300,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -1392,89 +1411,89 @@ yyreduce: switch (yyn) { case 2: -#line 150 "cond.y" /* yacc.c:1646 */ +#line 150 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; cond->result = (yyvsp[0].bool); } -#line 1401 "cond.tab.c" /* yacc.c:1646 */ +#line 1420 "cond.tab.c" /* yacc.c:1651 */ break; case 3: -#line 155 "cond.y" /* yacc.c:1646 */ +#line 155 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; cond->result = MSICONDITION_NONE; } -#line 1410 "cond.tab.c" /* yacc.c:1646 */ +#line 1429 "cond.tab.c" /* yacc.c:1651 */ break; case 4: -#line 163 "cond.y" /* yacc.c:1646 */ +#line 163 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = (yyvsp[0].bool); } -#line 1418 "cond.tab.c" /* yacc.c:1646 */ +#line 1437 "cond.tab.c" /* yacc.c:1651 */ break; case 5: -#line 167 "cond.y" /* yacc.c:1646 */ +#line 167 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = (yyvsp[-2].bool) || (yyvsp[0].bool); } -#line 1426 "cond.tab.c" /* yacc.c:1646 */ +#line 1445 "cond.tab.c" /* yacc.c:1651 */ break; case 6: -#line 171 "cond.y" /* yacc.c:1646 */ +#line 171 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = !(yyvsp[-2].bool) || (yyvsp[0].bool); } -#line 1434 "cond.tab.c" /* yacc.c:1646 */ +#line 1453 "cond.tab.c" /* yacc.c:1651 */ break; case 7: -#line 175 "cond.y" /* yacc.c:1646 */ +#line 175 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = ( (yyvsp[-2].bool) || (yyvsp[0].bool) ) && !( (yyvsp[-2].bool) && (yyvsp[0].bool) ); } -#line 1442 "cond.tab.c" /* yacc.c:1646 */ +#line 1461 "cond.tab.c" /* yacc.c:1651 */ break; case 8: -#line 179 "cond.y" /* yacc.c:1646 */ +#line 179 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = ( (yyvsp[-2].bool) && (yyvsp[0].bool) ) || ( !(yyvsp[-2].bool) && !(yyvsp[0].bool) ); } -#line 1450 "cond.tab.c" /* yacc.c:1646 */ +#line 1469 "cond.tab.c" /* yacc.c:1651 */ break; case 9: -#line 186 "cond.y" /* yacc.c:1646 */ +#line 186 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = (yyvsp[0].bool); } -#line 1458 "cond.tab.c" /* yacc.c:1646 */ +#line 1477 "cond.tab.c" /* yacc.c:1651 */ break; case 10: -#line 190 "cond.y" /* yacc.c:1646 */ +#line 190 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = (yyvsp[-2].bool) && (yyvsp[0].bool); } -#line 1466 "cond.tab.c" /* yacc.c:1646 */ +#line 1485 "cond.tab.c" /* yacc.c:1651 */ break; case 11: -#line 197 "cond.y" /* yacc.c:1646 */ +#line 197 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = !(yyvsp[0].bool); } -#line 1474 "cond.tab.c" /* yacc.c:1646 */ +#line 1493 "cond.tab.c" /* yacc.c:1651 */ break; case 12: -#line 201 "cond.y" /* yacc.c:1646 */ +#line 201 "cond.y" /* yacc.c:1651 */ { if ((yyvsp[0].value).type == VALUE_INTEGER) (yyval.bool) = (yyvsp[0].value).u.integer ? 1 : 0; @@ -1482,11 +1501,11 @@ yyreduce: (yyval.bool) = (yyvsp[0].value).u.string && (yyvsp[0].value).u.string[0]; value_free( (yyvsp[0].value) ); } -#line 1486 "cond.tab.c" /* yacc.c:1646 */ +#line 1505 "cond.tab.c" /* yacc.c:1651 */ break; case 13: -#line 209 "cond.y" /* yacc.c:1646 */ +#line 209 "cond.y" /* yacc.c:1651 */ { if ((yyvsp[-2].value).type == VALUE_INTEGER && (yyvsp[0].value).type == VALUE_INTEGER) { @@ -1499,7 +1518,7 @@ yyreduce: } else if ((yyvsp[-2].value).type == VALUE_LITERAL || (yyvsp[0].value).type == VALUE_LITERAL) { - (yyval.bool) = FALSE; + (yyval.bool) = ((yyvsp[-1].operator) == COND_NE || (yyvsp[-1].operator) == COND_INE ); } else if ((yyvsp[-2].value).type == VALUE_SYMBOL) /* symbol operator integer */ { @@ -1521,127 +1540,127 @@ yyreduce: value_free( (yyvsp[-2].value) ); value_free( (yyvsp[0].value) ); } -#line 1525 "cond.tab.c" /* yacc.c:1646 */ +#line 1544 "cond.tab.c" /* yacc.c:1651 */ break; case 14: -#line 244 "cond.y" /* yacc.c:1646 */ +#line 244 "cond.y" /* yacc.c:1651 */ { (yyval.bool) = (yyvsp[-1].bool); } -#line 1533 "cond.tab.c" /* yacc.c:1646 */ +#line 1552 "cond.tab.c" /* yacc.c:1651 */ break; case 15: -#line 251 "cond.y" /* yacc.c:1646 */ +#line 251 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_EQ; } -#line 1539 "cond.tab.c" /* yacc.c:1646 */ +#line 1558 "cond.tab.c" /* yacc.c:1651 */ break; case 16: -#line 252 "cond.y" /* yacc.c:1646 */ +#line 252 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_NE; } -#line 1545 "cond.tab.c" /* yacc.c:1646 */ +#line 1564 "cond.tab.c" /* yacc.c:1651 */ break; case 17: -#line 253 "cond.y" /* yacc.c:1646 */ +#line 253 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_LT; } -#line 1551 "cond.tab.c" /* yacc.c:1646 */ +#line 1570 "cond.tab.c" /* yacc.c:1651 */ break; case 18: -#line 254 "cond.y" /* yacc.c:1646 */ +#line 254 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_GT; } -#line 1557 "cond.tab.c" /* yacc.c:1646 */ +#line 1576 "cond.tab.c" /* yacc.c:1651 */ break; case 19: -#line 255 "cond.y" /* yacc.c:1646 */ +#line 255 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_LE; } -#line 1563 "cond.tab.c" /* yacc.c:1646 */ +#line 1582 "cond.tab.c" /* yacc.c:1651 */ break; case 20: -#line 256 "cond.y" /* yacc.c:1646 */ +#line 256 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_GE; } -#line 1569 "cond.tab.c" /* yacc.c:1646 */ +#line 1588 "cond.tab.c" /* yacc.c:1651 */ break; case 21: -#line 257 "cond.y" /* yacc.c:1646 */ +#line 257 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_SS; } -#line 1575 "cond.tab.c" /* yacc.c:1646 */ +#line 1594 "cond.tab.c" /* yacc.c:1651 */ break; case 22: -#line 258 "cond.y" /* yacc.c:1646 */ +#line 258 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_IEQ; } -#line 1581 "cond.tab.c" /* yacc.c:1646 */ +#line 1600 "cond.tab.c" /* yacc.c:1651 */ break; case 23: -#line 259 "cond.y" /* yacc.c:1646 */ +#line 259 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_INE; } -#line 1587 "cond.tab.c" /* yacc.c:1646 */ +#line 1606 "cond.tab.c" /* yacc.c:1651 */ break; case 24: -#line 260 "cond.y" /* yacc.c:1646 */ +#line 260 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_ILT; } -#line 1593 "cond.tab.c" /* yacc.c:1646 */ +#line 1612 "cond.tab.c" /* yacc.c:1651 */ break; case 25: -#line 261 "cond.y" /* yacc.c:1646 */ +#line 261 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_IGT; } -#line 1599 "cond.tab.c" /* yacc.c:1646 */ +#line 1618 "cond.tab.c" /* yacc.c:1651 */ break; case 26: -#line 262 "cond.y" /* yacc.c:1646 */ +#line 262 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_ILE; } -#line 1605 "cond.tab.c" /* yacc.c:1646 */ +#line 1624 "cond.tab.c" /* yacc.c:1651 */ break; case 27: -#line 263 "cond.y" /* yacc.c:1646 */ +#line 263 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_IGE; } -#line 1611 "cond.tab.c" /* yacc.c:1646 */ +#line 1630 "cond.tab.c" /* yacc.c:1651 */ break; case 28: -#line 264 "cond.y" /* yacc.c:1646 */ +#line 264 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_ISS; } -#line 1617 "cond.tab.c" /* yacc.c:1646 */ +#line 1636 "cond.tab.c" /* yacc.c:1651 */ break; case 29: -#line 265 "cond.y" /* yacc.c:1646 */ +#line 265 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_LHS; } -#line 1623 "cond.tab.c" /* yacc.c:1646 */ +#line 1642 "cond.tab.c" /* yacc.c:1651 */ break; case 30: -#line 266 "cond.y" /* yacc.c:1646 */ +#line 266 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_RHS; } -#line 1629 "cond.tab.c" /* yacc.c:1646 */ +#line 1648 "cond.tab.c" /* yacc.c:1651 */ break; case 31: -#line 267 "cond.y" /* yacc.c:1646 */ +#line 267 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_ILHS; } -#line 1635 "cond.tab.c" /* yacc.c:1646 */ +#line 1654 "cond.tab.c" /* yacc.c:1651 */ break; case 32: -#line 268 "cond.y" /* yacc.c:1646 */ +#line 268 "cond.y" /* yacc.c:1651 */ { (yyval.operator) = COND_IRHS; } -#line 1641 "cond.tab.c" /* yacc.c:1646 */ +#line 1660 "cond.tab.c" /* yacc.c:1651 */ break; case 33: -#line 273 "cond.y" /* yacc.c:1646 */ +#line 273 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; UINT len; @@ -1655,11 +1674,11 @@ yyreduce: } cond_free( (yyvsp[0].identifier) ); } -#line 1659 "cond.tab.c" /* yacc.c:1646 */ +#line 1678 "cond.tab.c" /* yacc.c:1651 */ break; case 34: -#line 287 "cond.y" /* yacc.c:1646 */ +#line 287 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; UINT len = GetEnvironmentVariableW( (yyvsp[0].identifier), NULL, 0 ); @@ -1674,11 +1693,11 @@ yyreduce: } cond_free( (yyvsp[0].identifier) ); } -#line 1678 "cond.tab.c" /* yacc.c:1646 */ +#line 1697 "cond.tab.c" /* yacc.c:1651 */ break; case 35: -#line 302 "cond.y" /* yacc.c:1646 */ +#line 302 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; (yyval.value).type = VALUE_LITERAL; @@ -1686,11 +1705,11 @@ yyreduce: if( !(yyval.value).u.string ) YYABORT; } -#line 1690 "cond.tab.c" /* yacc.c:1646 */ +#line 1709 "cond.tab.c" /* yacc.c:1651 */ break; case 36: -#line 310 "cond.y" /* yacc.c:1646 */ +#line 310 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; LPWSTR szNum = COND_GetString( cond, &(yyvsp[0].str) ); @@ -1700,11 +1719,11 @@ yyreduce: (yyval.value).u.integer = atoiW( szNum ); cond_free( szNum ); } -#line 1704 "cond.tab.c" /* yacc.c:1646 */ +#line 1723 "cond.tab.c" /* yacc.c:1651 */ break; case 37: -#line 320 "cond.y" /* yacc.c:1646 */ +#line 320 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; @@ -1721,11 +1740,11 @@ yyreduce: } cond_free( (yyvsp[0].identifier) ); } -#line 1725 "cond.tab.c" /* yacc.c:1646 */ +#line 1744 "cond.tab.c" /* yacc.c:1651 */ break; case 38: -#line 337 "cond.y" /* yacc.c:1646 */ +#line 337 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; @@ -1742,11 +1761,11 @@ yyreduce: } cond_free( (yyvsp[0].identifier) ); } -#line 1746 "cond.tab.c" /* yacc.c:1646 */ +#line 1765 "cond.tab.c" /* yacc.c:1651 */ break; case 39: -#line 354 "cond.y" /* yacc.c:1646 */ +#line 354 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; INSTALLSTATE install, action; @@ -1763,11 +1782,11 @@ yyreduce: } cond_free( (yyvsp[0].identifier) ); } -#line 1767 "cond.tab.c" /* yacc.c:1646 */ +#line 1786 "cond.tab.c" /* yacc.c:1651 */ break; case 40: -#line 371 "cond.y" /* yacc.c:1646 */ +#line 371 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; @@ -1784,22 +1803,22 @@ yyreduce: } cond_free( (yyvsp[0].identifier) ); } -#line 1788 "cond.tab.c" /* yacc.c:1646 */ +#line 1807 "cond.tab.c" /* yacc.c:1651 */ break; case 41: -#line 391 "cond.y" /* yacc.c:1646 */ +#line 391 "cond.y" /* yacc.c:1651 */ { COND_input* cond = (COND_input*) info; (yyval.identifier) = COND_GetString( cond, &(yyvsp[0].str) ); if( !(yyval.identifier) ) YYABORT; } -#line 1799 "cond.tab.c" /* yacc.c:1646 */ +#line 1818 "cond.tab.c" /* yacc.c:1651 */ break; -#line 1803 "cond.tab.c" /* yacc.c:1646 */ +#line 1822 "cond.tab.c" /* yacc.c:1651 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2027,7 +2046,7 @@ yyreturn: #endif return yyresult; } -#line 399 "cond.y" /* yacc.c:1906 */ +#line 399 "cond.y" /* yacc.c:1910 */ diff --git a/dll/win32/msi/cond.y b/dll/win32/msi/cond.y index 6ee6ab979cc..3a0d02879a8 100644 --- a/dll/win32/msi/cond.y +++ b/dll/win32/msi/cond.y @@ -218,7 +218,7 @@ boolean_factor: } else if ($1.type == VALUE_LITERAL || $3.type == VALUE_LITERAL) { - $$ = FALSE; + $$ = ($2 == COND_NE || $2 == COND_INE ); } else if ($1.type == VALUE_SYMBOL) /* symbol operator integer */ { -- 2.17.1