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 ae52b8c30b148d91bb51202efbf9e485472e9d0e..3a513e9c2cd584c3f5b2395f7e52f638d8133801 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 5ee8445640bf139d174a18a1bd1fdb83aa1b55f8..73e4f3505f8ef70cf4ceb77ed9d531990a90ad0b 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
     }