From a4bdd98c7a118f9eab1b3c4e3334a8fcb8d5df74 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 30 Oct 2013 02:07:56 +0100 Subject: [PATCH] BPackageInfo::Parser: Fix parsing the requires operator For entries without operator (and version) an invalid enum value would be used for the resulting BPackageResolvableExpression. Now it's B_PACKAGE_RESOLVABLE_OP_ENUM_COUNT in that case. --- src/kits/package/PackageInfoParser.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/kits/package/PackageInfoParser.cpp b/src/kits/package/PackageInfoParser.cpp index 377e8e8cf6..1bdc87084a 100644 --- a/src/kits/package/PackageInfoParser.cpp +++ b/src/kits/package/PackageInfoParser.cpp @@ -600,6 +600,7 @@ BPackageInfo::Parser::_ParseResolvableExprList( BPackageVersion version; Token op = parser._NextToken(); + BPackageResolvableOperator resolvableOperator; if (op.type == TOKEN_OPERATOR_LESS || op.type == TOKEN_OPERATOR_LESS_EQUAL || op.type == TOKEN_OPERATOR_EQUAL @@ -621,18 +622,19 @@ BPackageInfo::Parser::_ParseResolvableExprList( } else parser._RewindTo(base); } + + resolvableOperator = (BPackageResolvableOperator) + (op.type - TOKEN_OPERATOR_LESS); } else if (op.type == TOKEN_ITEM_SEPARATOR || op.type == TOKEN_CLOSE_BRACE) { parser._RewindTo(op); + resolvableOperator = B_PACKAGE_RESOLVABLE_OP_ENUM_COUNT; } else { throw ParseError( "expected '<', '<=', '==', '!=', '>=', '>', comma or '}'", op.pos); } - BPackageResolvableOperator resolvableOperator - = (BPackageResolvableOperator)(op.type - TOKEN_OPERATOR_LESS); - value->AddItem(new BPackageResolvableExpression(token.text, resolvableOperator, version)); }