From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752911AbdKJMsO (ORCPT ); Fri, 10 Nov 2017 07:48:14 -0500 Received: from mout.web.de ([212.227.15.3]:54559 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751061AbdKJMsN (ORCPT ); Fri, 10 Nov 2017 07:48:13 -0500 Subject: [PATCH 2/4] ASN.1: Improve exiting from parse_type() From: SF Markus Elfring To: kernel-janitors@vger.kernel.org, Andrew Morton Cc: LKML References: <960a8501-03b0-95d9-c2bf-4633e48e73a6@users.sourceforge.net> Message-ID: <6fd7f347-cdbb-9a0e-9817-8a35b262d8a6@users.sourceforge.net> Date: Fri, 10 Nov 2017 13:48:10 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <960a8501-03b0-95d9-c2bf-4633e48e73a6@users.sourceforge.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:cYxVOMkanCcue4Arqcba+rykcNaSR7i4G3TBxQJlomlGuud+UtL mTwXJU8Etfq7+9lm8YfoBIZFxV8nrXHKNCNDFjsmN6PdjBYKkjBTFTTHhwfxqCFxz9mSpTu t1tJcDNAL+WLadUXKxWH4YA8xXNLJ8R9AObLbWZZg8QFbcsXC9FgLaFWuIRnT2za2SvkeEe 1wbWCa5fNsiBvb1Vzksjw== X-UI-Out-Filterresults: notjunk:1;V01:K0:PV/YfbuPQGk=:gPgLX/TonbshN9RKnllNgN DJn4ZsRDEESDqOjz4sHNZPLkpaNBup2hJhuXR9y0EQ4rEN3Q/t5w42DklTKoXTm2eRMF3atCL U05U2g9H1Vpc8BaN20P4ggQST/63pcv6T7KTpe9uN/rNUJAZrSU11hmkNQGT4Xgqbu6ePp2a6 MonVBQ6miqj4vg95ZpukKPSg0WwD66AgrC+eNlgetD0OLLByKHEePqi0D0TafW6oixouCaTSR XB/83QHVGzcHELtLpC3aoFUJKoqBwVTb05adiHv1HRe5aQJ7y+ITzOLTHxfCwjmazX50T0waY zq6mU9rRFVFGSB4ukE6playGx5Gg8E05ko9vFiid07i9677Xg4vydsIuWsU8+Fp4fwyCc9CUc 2TVEzpt/sCD1KFK/I2u13HzmcA7kxSUJdAUSNQ+agMRB5kvaDn+S/dymE/NLy2U7s7x96wx/E no3tl//WsfHGK61zab5UpWt1dbJgBzj+KoP0TA/xmb3Yx0sTmcFn7OXiwx4YHqRoczJwK/59V pO5AnGWltEDJFLLTEacpN5LiyYWM6WiYQCAMGB9qngFhQOZVLb8vvO5skgGA+N/8x+Mgznjb7 FzXwV1q4KbxiSHcVv/A++W8+Y0zDKGewrmrIC3e5RZRaSy8+F4NUFoFf5iKFbo1GsGVllqNOV gTcVfuv7M+DJEdH1Y1EJf2OuqARP+Df9QXkeOHgoluzVAUI3y87rjnYPkCiciskL0t3flsAyT 51sZzKByGhJf8F+y0fF+XTjSMahVabD7jlEh6YzQGthroXX23fL18IAttr2SSMD7uxb60FroB E0eJPYjGE0eytwlVsOB5c1R6onZVXWiVSthvtCbeazeZWK2ZPk= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Fri, 10 Nov 2017 11:21:13 +0100 * Add a jump target so that a call of the function "exit" is stored only once at the end of this function. * Replace nine calls by goto statements. Signed-off-by: Markus Elfring --- scripts/asn1_compiler.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/scripts/asn1_compiler.c b/scripts/asn1_compiler.c index e37e5ef3fabb..0eea270fcaef 100644 --- a/scripts/asn1_compiler.c +++ b/scripts/asn1_compiler.c @@ -896,7 +896,7 @@ static struct element *parse_type(struct token **_cursor, struct token *end, default: fprintf(stderr, "%s:%d: Unrecognised tag class token '%s'\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } if (cursor >= end) @@ -904,7 +904,7 @@ static struct element *parse_type(struct token **_cursor, struct token *end, if (cursor->token_type != TOKEN_NUMBER) { fprintf(stderr, "%s:%d: Missing tag number '%s'\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } element->tag &= ~0x1f; @@ -919,7 +919,7 @@ static struct element *parse_type(struct token **_cursor, struct token *end, if (cursor->token_type != TOKEN_CLOSE_SQUARE) { fprintf(stderr, "%s:%d: Missing closing square bracket '%s'\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } cursor++; if (cursor >= end) @@ -1020,7 +1020,7 @@ static struct element *parse_type(struct token **_cursor, struct token *end, if (!ref) { fprintf(stderr, "%s:%d: Type '%s' undefined\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } cursor->type = *ref; (*ref)->ref_count++; @@ -1070,7 +1070,7 @@ static struct element *parse_type(struct token **_cursor, struct token *end, default: fprintf(stderr, "%s:%d: Token '%s' does not introduce a type\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } /* Handle elements that are optional */ @@ -1088,13 +1088,13 @@ static struct element *parse_type(struct token **_cursor, struct token *end, if (cursor->token_type != TOKEN_ELEMENT_NAME) { fprintf(stderr, "%s:%d: Token '%s' is not an action function name\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } action = malloc(sizeof(struct action)); if (!action) { perror(NULL); - exit(1); + goto exit; } action->index = 0; action->name = cursor->content; @@ -1129,7 +1129,7 @@ static struct element *parse_type(struct token **_cursor, struct token *end, if (cursor->token_type != TOKEN_CLOSE_ACTION) { fprintf(stderr, "%s:%d: Missing close action, got '%s'\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; } cursor++; } @@ -1140,10 +1140,11 @@ static struct element *parse_type(struct token **_cursor, struct token *end, parse_error: fprintf(stderr, "%s:%d: Unexpected token '%s'\n", filename, cursor->line, cursor->content); - exit(1); + goto exit; overrun_error: fprintf(stderr, "%s: Unexpectedly hit EOF\n", filename); +exit: exit(1); } -- 2.15.0