@@ -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,11 +201,11 @@ static {{classname}}_t *{{classname}}_create_internal(
201201 if (!{ {classname} }_local_var) {
202202 return NULL;
203203 }
204+ memset({ {classname} }_local_var, 0, sizeof({ {classname} }_t));
205+ { {classname} }_local_var->_library_owned = 1;
204206 { {#vars} }
205207 { {classname} }_local_var->{ {{name} }} = { {{name} }};
206208 { {/vars} }
207-
208- { {classname} }_local_var->_library_owned = 1;
209209 return { {classname} }_local_var;
210210}
211211
@@ -243,10 +243,10 @@ __attribute__((deprecated)) {{classname}}_t *{{classname}}_create(
243243 { {/isPrimitiveType} }
244244 { {#isPrimitiveType} }
245245 { {#isNumeric} }
246- { {datatype} } { {name} }{ {^-last} },{ {/-last} }
246+ { {datatype} } * { {name} }{ {^-last} },{ {/-last} }
247247 { {/isNumeric} }
248248 { {#isBoolean} }
249- { {datatype} } { {name} }{ {^-last} },{ {/-last} }
249+ { {datatype} } * { {name} }{ {^-last} },{ {/-last} }
250250 { {/isBoolean} }
251251 { {#isEnum} }
252252 { {#isString} }
@@ -287,11 +287,57 @@ __attribute__((deprecated)) {{classname}}_t *{{classname}}_create(
287287 { {/isContainer} }
288288 { {/vars} }
289289 ) {
290- return {{classname} }_create_internal (
290+ {{#vars} }
291+ { {#isPrimitiveType} }
292+ { {#isNumeric} }
293+ { {datatype} } *{ {name} }_copy = NULL;
294+ if ({ {{name} }}) {
295+ {{name} }_copy = malloc(sizeof({ {datatype} }));
296+ if ({ {name} }_copy) *{ {name} }_copy = *{ {{name} }};
297+ }
298+ { {/isNumeric} }
299+ { {#isBoolean} }
300+ { {datatype} } *{ {name} }_copy = NULL;
301+ if ({ {{name} }}) {
302+ {{name} }_copy = malloc(sizeof({ {datatype} }));
303+ if ({ {name} }_copy) *{ {name} }_copy = *{ {{name} }};
304+ }
305+ { {/isBoolean} }
306+ { {/isPrimitiveType} }
307+ { {/vars} }
308+ { {classname} }_t *result = { {classname} }_create_internal (
291309 { {#vars} }
310+ { {#isPrimitiveType} }
311+ { {#isNumeric} }
312+ { {name} }_copy{ {^-last} },{ {/-last} }
313+ { {/isNumeric} }
314+ { {#isBoolean} }
315+ { {name} }_copy{ {^-last} },{ {/-last} }
316+ { {/isBoolean} }
317+ { {^isNumeric} }
318+ { {^isBoolean} }
319+ { {name} }{ {^-last} },{ {/-last} }
320+ { {/isBoolean} }
321+ { {/isNumeric} }
322+ { {/isPrimitiveType} }
323+ { {^isPrimitiveType} }
292324 { {name} }{ {^-last} },{ {/-last} }
325+ { {/isPrimitiveType} }
293326 { {/vars} }
294327 );
328+ if (!result) {
329+ {{#vars} }
330+ { {#isPrimitiveType} }
331+ { {#isNumeric} }
332+ free({ {name} }_copy);
333+ { {/isNumeric} }
334+ { {#isBoolean} }
335+ free({ {name} }_copy);
336+ { {/isBoolean} }
337+ { {/isPrimitiveType} }
338+ { {/vars} }
339+ }
340+ return result;
295341}
296342
297343void { {classname} }_free({ {classname} }_t *{ {classname} }) {
@@ -344,6 +390,18 @@ void {{classname}}_free({{classname}}_t *{{classname}}) {
344390 { {/isFreeFormObject} }
345391 { {/isPrimitiveType} }
346392 { {#isPrimitiveType} }
393+ { {#isNumeric} }
394+ if ({ {{classname} }}->{ {{name} }}) {
395+ free({{{classname} }}->{ {{name} }});
396+ { {classname} }->{ {name} } = NULL;
397+ }
398+ { {/isNumeric} }
399+ { {#isBoolean} }
400+ if ({ {{classname} }}->{ {{name} }}) {
401+ free({{{classname} }}->{ {{name} }});
402+ { {classname} }->{ {name} } = NULL;
403+ }
404+ { {/isBoolean} }
347405 { {^isEnum} }
348406 { {#isString} }
349407 if ({ {{classname} }}->{ {{name} }}) {
@@ -454,12 +512,12 @@ cJSON *{{classname}}_convertToJSON({{classname}}_t *{{classname}}) {
454512 { {^isContainer} }
455513 { {#isPrimitiveType} }
456514 { {#isNumeric} }
457- if(cJSON_AddNumberToObject(item, "{ {{baseName} }}", { {{classname} }}->{ {{name} }}) == NULL) {
515+ if(cJSON_AddNumberToObject(item, "{ {{baseName} }}", * { {{classname} }}->{ {{name} }}) == NULL) {
458516 goto fail; //Numeric
459517 }
460518 { {/isNumeric} }
461519 { {#isBoolean} }
462- if(cJSON_AddBoolToObject(item, "{ {{baseName} }}", { {{classname} }}->{ {{name} }}) == NULL) {
520+ if(cJSON_AddBoolToObject(item, "{ {{baseName} }}", * { {{classname} }}->{ {{name} }}) == NULL) {
463521 goto fail; //Bool
464522 }
465523 { {/isBoolean} }
@@ -699,6 +757,44 @@ fail:
699757
700758 { {/isFreeFormObject} }
701759 { {/isModel} }
760+ { {#isUuid} }
761+ char *{ {name} }_local_str = NULL;
762+
763+ { {/isUuid} }
764+ { {#isEmail} }
765+ char *{ {name} }_local_str = NULL;
766+
767+ { {/isEmail} }
768+ { {/isPrimitiveType} }
769+ { {#isPrimitiveType} }
770+ { {#isNumeric} }
771+ // define the local variable for { {{classname} }}->{ {{name} }}
772+ { {datatype} } *{ {name} }_local_var = NULL;
773+
774+ { {/isNumeric} }
775+ { {#isBoolean} }
776+ // define the local variable for { {{classname} }}->{ {{name} }}
777+ { {datatype} } *{ {name} }_local_var = NULL;
778+
779+ { {/isBoolean} }
780+ { {^isEnum} }
781+ { {#isString} }
782+ char *{ {name} }_local_str = NULL;
783+
784+ { {/isString} }
785+ { {/isEnum} }
786+ { {#isByteArray} }
787+ char *{ {name} }_local_str = NULL;
788+
789+ { {/isByteArray} }
790+ { {#isDate} }
791+ char *{ {name} }_local_str = NULL;
792+
793+ { {/isDate} }
794+ { {#isDateTime} }
795+ char *{ {name} }_local_str = NULL;
796+
797+ { {/isDateTime} }
702798 { {/isPrimitiveType} }
703799 { {/isContainer} }
704800 { {/vars} }
@@ -722,13 +818,25 @@ fail:
722818 {
723819 goto end; //Numeric
724820 }
821+ { {name} }_local_var = malloc(sizeof({ {datatype} }));
822+ if(!{ {name} }_local_var)
823+ {
824+ goto end;
825+ }
826+ *{ {name} }_local_var = { {{name} }}->valuedouble;
725827 { {/isNumeric} }
726828 { {#isBoolean} }
727829 { {^required} }if ({ {{name} }}) { {{/required} }
728830 if(!cJSON_IsBool({ {{name} }}))
729831 {
730832 goto end; //Bool
731833 }
834+ { {name} }_local_var = malloc(sizeof({ {datatype} }));
835+ if(!{ {name} }_local_var)
836+ {
837+ goto end;
838+ }
839+ *{ {name} }_local_var = { {{name} }}->valueint;
732840 { {/isBoolean} }
733841 { {#isEnum} }
734842 { {#isString} }
@@ -948,6 +1056,35 @@ fail:
9481056
9491057 { {/vars} }
9501058
1059+ { {#vars} }
1060+ { {^isContainer} }
1061+ { {^isPrimitiveType} }
1062+ { {#isUuid} }
1063+ if ({ {{name} }}) { {name} }_local_str = strdup({ {{name} }}->valuestring);
1064+ { {/isUuid} }
1065+ { {#isEmail} }
1066+ if ({ {{name} }}) { {name} }_local_str = strdup({ {{name} }}->valuestring);
1067+ { {/isEmail} }
1068+ { {/isPrimitiveType} }
1069+ { {#isPrimitiveType} }
1070+ { {^isEnum} }
1071+ { {#isString} }
1072+ if ({ {{name} }} && !cJSON_IsNull({ {{name} }})) { {name} }_local_str = strdup({ {{name} }}->valuestring);
1073+ { {/isString} }
1074+ { {/isEnum} }
1075+ { {#isByteArray} }
1076+ if ({ {{name} }}) { {name} }_local_str = strdup({ {{name} }}->valuestring);
1077+ { {/isByteArray} }
1078+ { {#isDate} }
1079+ if ({ {{name} }}) { {name} }_local_str = strdup({ {{name} }}->valuestring);
1080+ { {/isDate} }
1081+ { {#isDateTime} }
1082+ if ({ {{name} }} && !cJSON_IsNull({ {{name} }})) { {name} }_local_str = strdup({ {{name} }}->valuestring);
1083+ { {/isDateTime} }
1084+ { {/isPrimitiveType} }
1085+ { {/isContainer} }
1086+ { {/vars} }
1087+
9511088 { {classname} }_local_var = { {classname} }_create_internal (
9521089 { {#vars} }
9531090 { {^isContainer} }
@@ -966,21 +1103,21 @@ fail:
9661103 { {/isFreeFormObject} }
9671104 { {/isModel} }
9681105 { {#isUuid} }
969- { {^required } } { {{ name} }} ? { {/required } }strdup( { {{name } }}->valuestring) { {^required } } : NULL { {/required } } { {^-last} },{ {/-last} }
1106+ { {name} }_local_str { {^-last} },{ {/-last} }
9701107 { {/isUuid} }
9711108 { {#isEmail} }
972- { {^required } } { {{ name} }} ? { {/required } }strdup( { {{name } }}->valuestring) { {^required } } : NULL { {/required } } { {^-last} },{ {/-last} }
1109+ { {name} }_local_str { {^-last} },{ {/-last} }
9731110 { {/isEmail} }
9741111 { {#isFreeFormObject} }
9751112 { {^required} }{ {{name} }} ? { {/required} }{ {{name} }}_local_object{ {^required} } : NULL{ {/required} }{ {^-last} },{ {/-last} }
9761113 { {/isFreeFormObject} }
9771114 { {/isPrimitiveType} }
9781115 { {#isPrimitiveType} }
9791116 { {#isNumeric} }
980- { {^required } } { {{ name} }} ? { {/required } } { {{name } }}->valuedouble { {^required } } : 0 { {/required } } { {^-last} },{ {/-last} }
1117+ { {name} }_local_var { {^-last} },{ {/-last} }
9811118 { {/isNumeric} }
9821119 { {#isBoolean} }
983- { {^required } } { {{ name} }} ? { {/required } } { {{name } }}->valueint { {^required } } : 0 { {/required } } { {^-last} },{ {/-last} }
1120+ { {name} }_local_var { {^-last} },{ {/-last} }
9841121 { {/isBoolean} }
9851122 { {#isEnum} }
9861123 { {#isString} }
@@ -989,20 +1126,20 @@ fail:
9891126 { {/isEnum} }
9901127 { {^isEnum} }
9911128 { {#isString} }
992- { {^required } } { {{ name} }} && !cJSON_IsNull( { {{name } }}) ? { {/required } }strdup( { {{name } }}->valuestring) { {^required } } : NULL { {/required } } { {^-last} },{ {/-last} }
1129+ { {name} }_local_str { {^-last} },{ {/-last} }
9931130 { {/isString} }
9941131 { {/isEnum} }
9951132 { {#isByteArray} }
996- { {^required } } { {{ name} }} ? { {/required } }strdup( { {{name } }}->valuestring) { {^required } } : NULL { {/required } } { {^-last} },{ {/-last} }
1133+ { {name} }_local_str { {^-last} },{ {/-last} }
9971134 { {/isByteArray} }
9981135 { {#isBinary} }
9991136 { {^required} }{ {{name} }} ? { {/required} }decoded_str_{ {{name} }}{ {^required} } : NULL{ {/required} }{ {^-last} },{ {/-last} }
10001137 { {/isBinary} }
10011138 { {#isDate} }
1002- { {^required } } { {{ name} }} ? { {/required } }strdup( { {{name } }}->valuestring) { {^required } } : NULL { {/required } } { {^-last} },{ {/-last} }
1139+ { {name} }_local_str { {^-last} },{ {/-last} }
10031140 { {/isDate} }
10041141 { {#isDateTime} }
1005- { {^required } } { {{ name} }} && !cJSON_IsNull( { {{name } }}) ? { {/required } }strdup( { {{name } }}->valuestring) { {^required } } : NULL { {/required } } { {^-last} },{ {/-last} }
1142+ { {name} }_local_str { {^-last} },{ {/-last} }
10061143 { {/isDateTime} }
10071144 { {/isPrimitiveType} }
10081145 { {/isContainer} }
@@ -1022,6 +1159,10 @@ fail:
10221159 { {/vars} }
10231160 );
10241161
1162+ if (!{ {classname} }_local_var) {
1163+ goto end;
1164+ }
1165+
10251166 return { {classname} }_local_var;
10261167end:
10271168 { {#vars} }
@@ -1045,6 +1186,58 @@ end:
10451186 }
10461187 { {/isFreeFormObject} }
10471188 { {/isModel} }
1189+ { {#isUuid} }
1190+ if ({ {{name} }}_local_str) {
1191+ free({{{name} }}_local_str);
1192+ { {{name} }}_local_str = NULL;
1193+ }
1194+ { {/isUuid} }
1195+ { {#isEmail} }
1196+ if ({ {{name} }}_local_str) {
1197+ free({{{name} }}_local_str);
1198+ { {{name} }}_local_str = NULL;
1199+ }
1200+ { {/isEmail} }
1201+ { {/isPrimitiveType} }
1202+ { {#isPrimitiveType} }
1203+ { {#isNumeric} }
1204+ if ({ {{name} }}_local_var) {
1205+ free({{{name} }}_local_var);
1206+ { {{name} }}_local_var = NULL;
1207+ }
1208+ { {/isNumeric} }
1209+ { {#isBoolean} }
1210+ if ({ {{name} }}_local_var) {
1211+ free({{{name} }}_local_var);
1212+ { {{name} }}_local_var = NULL;
1213+ }
1214+ { {/isBoolean} }
1215+ { {^isEnum} }
1216+ { {#isString} }
1217+ if ({ {{name} }}_local_str) {
1218+ free({{{name} }}_local_str);
1219+ { {{name} }}_local_str = NULL;
1220+ }
1221+ { {/isString} }
1222+ { {/isEnum} }
1223+ { {#isByteArray} }
1224+ if ({ {{name} }}_local_str) {
1225+ free({{{name} }}_local_str);
1226+ { {{name} }}_local_str = NULL;
1227+ }
1228+ { {/isByteArray} }
1229+ { {#isDate} }
1230+ if ({ {{name} }}_local_str) {
1231+ free({{{name} }}_local_str);
1232+ { {{name} }}_local_str = NULL;
1233+ }
1234+ { {/isDate} }
1235+ { {#isDateTime} }
1236+ if ({ {{name} }}_local_str) {
1237+ free({{{name} }}_local_str);
1238+ { {{name} }}_local_str = NULL;
1239+ }
1240+ { {/isDateTime} }
10481241 { {/isPrimitiveType} }
10491242 { {/isContainer} }
10501243 { {#isContainer} }
0 commit comments