From 369133a03e8a6958d32e90c371224862da7a8eb5 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Fri, 5 Nov 2021 10:51:57 +0800 Subject: [PATCH] [C][Client] Define and initialize non-primitive variables at the beginning of function (#10756) --- .../src/main/resources/C-libcurl/model-body.mustache | 12 +++++++++++- samples/client/petstore/c/model/pet.c | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache index ae52b8c30b1..3a513e9c2cd 100644 --- a/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache +++ b/modules/openapi-generator/src/main/resources/C-libcurl/model-body.mustache @@ -527,6 +527,17 @@ fail: {{classname}}_t *{{classname}}_local_var = NULL; + {{#vars}} + {{^isPrimitiveType}} + {{#isModel}} + {{^isEnum}} + // define the local variable for {{{classname}}}->{{{name}}} + {{^isFreeFormObject}}{{complexType}}{{/isFreeFormObject}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_t *{{name}}_local_nonprim = NULL; + + {{/isEnum}} + {{/isModel}} + {{/isPrimitiveType}} + {{/vars}} {{#vars}} // {{{classname}}}->{{{name}}} cJSON *{{{name}}} = cJSON_GetObjectItemCaseSensitive({{classname}}JSON, "{{{baseName}}}"); @@ -614,7 +625,6 @@ fail: {{{name}}}_local_nonprim_enum = {{datatypeWithEnum}}_parseFromJSON({{{name}}}); //enum model {{/isEnum}} {{^isEnum}} - {{^isFreeFormObject}}{{complexType}}{{/isFreeFormObject}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_t *{{name}}_local_nonprim = NULL; {{^required}}if ({{{name}}}) { {{/required}} {{{name}}}_local_nonprim = {{complexType}}{{#isFreeFormObject}}object{{/isFreeFormObject}}_parseFromJSON({{{name}}}); //nonprimitive {{/isEnum}} diff --git a/samples/client/petstore/c/model/pet.c b/samples/client/petstore/c/model/pet.c index 5ee8445640b..73e4f3505f8 100644 --- a/samples/client/petstore/c/model/pet.c +++ b/samples/client/petstore/c/model/pet.c @@ -168,6 +168,9 @@ pet_t *pet_parseFromJSON(cJSON *petJSON){ pet_t *pet_local_var = NULL; + // define the local variable for pet->category + category_t *category_local_nonprim = NULL; + // pet->id cJSON *id = cJSON_GetObjectItemCaseSensitive(petJSON, "id"); if (id) { @@ -179,7 +182,6 @@ pet_t *pet_parseFromJSON(cJSON *petJSON){ // pet->category cJSON *category = cJSON_GetObjectItemCaseSensitive(petJSON, "category"); - category_t *category_local_nonprim = NULL; if (category) { category_local_nonprim = category_parseFromJSON(category); //nonprimitive }