@@ -153,10 +153,10 @@ static {{classname}}_t *{{classname}}_create_internal(
153153 { {/isPrimitiveType} }
154154 { {#isPrimitiveType} }
155155 { {#isNumeric} }
156- { {datatype} } { {name} }{ {^-last} },{ {/-last} }
156+ { {datatype} } * { {name} }{ {^-last} },{ {/-last} }
157157 { {/isNumeric} }
158158 { {#isBoolean} }
159- { {datatype} } { {name} }{ {^-last} },{ {/-last} }
159+ { {datatype} } * { {name} }{ {^-last} },{ {/-last} }
160160 { {/isBoolean} }
161161 { {#isEnum} }
162162 { {#isString} }
@@ -201,8 +201,43 @@ static {{classname}}_t *{{classname}}_create_internal(
201201 if (!{ {classname} }_local_var) {
202202 return NULL;
203203 }
204+ memset({ {classname} }_local_var, 0, sizeof({ {classname} }_t));
204205 { {#vars} }
206+ { {^isContainer} }
207+ { {#isPrimitiveType} }
208+ { {#isNumeric} }
209+ if ({ {{name} }}) {
210+ {{classname} }_local_var->{ {{name} }} = malloc(sizeof({ {datatype} }));
211+ if (!{ {classname} }_local_var->{ {{name} }}) {
212+ {{classname} }_free({ {classname} }_local_var);
213+ return NULL;
214+ }
215+ *{ {classname} }_local_var->{ {{name} }} = *{ {{name} }};
216+ }
217+ { {/isNumeric} }
218+ { {#isBoolean} }
219+ if ({ {{name} }}) {
220+ {{classname} }_local_var->{ {{name} }} = malloc(sizeof({ {datatype} }));
221+ if (!{ {classname} }_local_var->{ {{name} }}) {
222+ {{classname} }_free({ {classname} }_local_var);
223+ return NULL;
224+ }
225+ *{ {classname} }_local_var->{ {{name} }} = *{ {{name} }};
226+ }
227+ { {/isBoolean} }
228+ { {^isNumeric} }
229+ { {^isBoolean} }
230+ { {classname} }_local_var->{ {{name} }} = { {{name} }};
231+ { {/isBoolean} }
232+ { {/isNumeric} }
233+ { {/isPrimitiveType} }
234+ { {^isPrimitiveType} }
235+ { {classname} }_local_var->{ {{name} }} = { {{name} }};
236+ { {/isPrimitiveType} }
237+ { {/isContainer} }
238+ { {#isContainer} }
205239 { {classname} }_local_var->{ {{name} }} = { {{name} }};
240+ { {/isContainer} }
206241 { {/vars} }
207242
208243 { {classname} }_local_var->_library_owned = 1;
@@ -243,10 +278,10 @@ __attribute__((deprecated)) {{classname}}_t *{{classname}}_create(
243278 { {/isPrimitiveType} }
244279 { {#isPrimitiveType} }
245280 { {#isNumeric} }
246- { {datatype} } { {name} }{ {^-last} },{ {/-last} }
281+ { {datatype} } * { {name} }{ {^-last} },{ {/-last} }
247282 { {/isNumeric} }
248283 { {#isBoolean} }
249- { {datatype} } { {name} }{ {^-last} },{ {/-last} }
284+ { {datatype} } * { {name} }{ {^-last} },{ {/-last} }
250285 { {/isBoolean} }
251286 { {#isEnum} }
252287 { {#isString} }
@@ -344,6 +379,18 @@ void {{classname}}_free({{classname}}_t *{{classname}}) {
344379 { {/isFreeFormObject} }
345380 { {/isPrimitiveType} }
346381 { {#isPrimitiveType} }
382+ { {#isNumeric} }
383+ if ({ {{classname} }}->{ {{name} }}) {
384+ free({{{classname} }}->{ {{name} }});
385+ { {classname} }->{ {name} } = NULL;
386+ }
387+ { {/isNumeric} }
388+ { {#isBoolean} }
389+ if ({ {{classname} }}->{ {{name} }}) {
390+ free({{{classname} }}->{ {{name} }});
391+ { {classname} }->{ {name} } = NULL;
392+ }
393+ { {/isBoolean} }
347394 { {^isEnum} }
348395 { {#isString} }
349396 if ({ {{classname} }}->{ {{name} }}) {
@@ -454,12 +501,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) {
454501 { {^isContainer} }
455502 { {#isPrimitiveType} }
456503 { {#isNumeric} }
457- if(cJSON_AddNumberToObject(item, "{ {{baseName} }}", { {{classname} }}->{ {{name} }}) == NULL) {
504+ if(cJSON_AddNumberToObject(item, "{ {{baseName} }}", * { {{classname} }}->{ {{name} }}) == NULL) {
458505 goto fail; //Numeric
459506 }
460507 { {/isNumeric} }
461508 { {#isBoolean} }
462- if(cJSON_AddBoolToObject(item, "{ {{baseName} }}", { {{classname} }}->{ {{name} }}) == NULL) {
509+ if(cJSON_AddBoolToObject(item, "{ {{baseName} }}", * { {{classname} }}->{ {{name} }}) == NULL) {
463510 goto fail; //Bool
464511 }
465512 { {/isBoolean} }
@@ -700,6 +747,18 @@ fail:
700747 { {/isFreeFormObject} }
701748 { {/isModel} }
702749 { {/isPrimitiveType} }
750+ { {#isPrimitiveType} }
751+ { {#isNumeric} }
752+ // define the local variable for { {{classname} }}->{ {{name} }}
753+ { {datatype} } *{ {name} }_local_var = NULL;
754+
755+ { {/isNumeric} }
756+ { {#isBoolean} }
757+ // define the local variable for { {{classname} }}->{ {{name} }}
758+ { {datatype} } *{ {name} }_local_var = NULL;
759+
760+ { {/isBoolean} }
761+ { {/isPrimitiveType} }
703762 { {/isContainer} }
704763 { {/vars} }
705764 { {#vars} }
@@ -722,13 +781,25 @@ fail:
722781 {
723782 goto end; //Numeric
724783 }
784+ { {name} }_local_var = malloc(sizeof({ {datatype} }));
785+ if(!{ {name} }_local_var)
786+ {
787+ goto end;
788+ }
789+ *{ {name} }_local_var = { {{name} }}->valuedouble;
725790 { {/isNumeric} }
726791 { {#isBoolean} }
727792 { {^required} }if ({ {{name} }}) { {{/required} }
728793 if(!cJSON_IsBool({ {{name} }}))
729794 {
730795 goto end; //Bool
731796 }
797+ { {name} }_local_var = malloc(sizeof({ {datatype} }));
798+ if(!{ {name} }_local_var)
799+ {
800+ goto end;
801+ }
802+ *{ {name} }_local_var = { {{name} }}->valueint;
732803 { {/isBoolean} }
733804 { {#isEnum} }
734805 { {#isString} }
@@ -977,10 +1048,10 @@ fail:
9771048 { {/isPrimitiveType} }
9781049 { {#isPrimitiveType} }
9791050 { {#isNumeric} }
980- { {^required } } { {{ name} }} ? { {/required } } { {{name } }}->valuedouble { {^required } } : 0 { {/required } } { {^-last} },{ {/-last} }
1051+ { {name} }_local_var { {^-last} },{ {/-last} }
9811052 { {/isNumeric} }
9821053 { {#isBoolean} }
983- { {^required } } { {{ name} }} ? { {/required } } { {{name } }}->valueint { {^required } } : 0 { {/required } } { {^-last} },{ {/-last} }
1054+ { {name} }_local_var { {^-last} },{ {/-last} }
9841055 { {/isBoolean} }
9851056 { {#isEnum} }
9861057 { {#isString} }
@@ -1046,6 +1117,20 @@ end:
10461117 { {/isFreeFormObject} }
10471118 { {/isModel} }
10481119 { {/isPrimitiveType} }
1120+ { {#isPrimitiveType} }
1121+ { {#isNumeric} }
1122+ if ({ {{name} }}_local_var) {
1123+ free({{{name} }}_local_var);
1124+ { {{name} }}_local_var = NULL;
1125+ }
1126+ { {/isNumeric} }
1127+ { {#isBoolean} }
1128+ if ({ {{name} }}_local_var) {
1129+ free({{{name} }}_local_var);
1130+ { {{name} }}_local_var = NULL;
1131+ }
1132+ { {/isBoolean} }
1133+ { {/isPrimitiveType} }
10491134 { {/isContainer} }
10501135 { {#isContainer} }
10511136 { {#isArray} }
0 commit comments