@@ -42,7 +42,7 @@ Property* unpack_properties(json_t* properties) {
4242 int unpk = json_unpack_ex (property ,
4343 & error ,
4444 0 ,
45- "{s:s, s? s, s?s, s:o}" ,
45+ "{s:s, s: s, s?s, s:o}" ,
4646 "name" ,
4747 & ret [idx ].name ,
4848 "type" ,
@@ -60,8 +60,7 @@ Property* unpack_properties(json_t* properties) {
6060 return NULL ;
6161 }
6262
63- // note: string is default type, so missing field means string
64- if (ret [idx ].type == NULL || strcmp (ret [idx ].type , "string" ) == 0 ) {
63+ if (strcmp (ret [idx ].type , "string" ) == 0 ) {
6564 unpk = json_unpack_ex (value , & error , 0 , "s" , & ret [idx ].value_string );
6665
6766 if (unpk == -1 ) {
@@ -86,7 +85,7 @@ Property* unpack_properties(json_t* properties) {
8685 }
8786
8887 if (strcmp (ret [idx ].type , "float" ) == 0 ) {
89- unpk = json_unpack_ex (value , & error , 0 , "i " , & ret [idx ].value_float );
88+ unpk = json_unpack_ex (value , & error , 0 , "F " , & ret [idx ].value_float );
9089
9190 if (unpk == -1 ) {
9291 logmsg (TMJ_LOG_ERR , "Unable to unpack float value from property, %s at line %d column %d" , error .text , error .line , error .column );
@@ -260,6 +259,8 @@ Object* unpack_objects(json_t* objects) {
260259
261260 if (!json_is_array (objects )) {
262261 logmsg (TMJ_LOG_ERR , "'objects' must be an array" );
262+
263+ return NULL ;
263264 }
264265
265266 json_error_t error ;
@@ -332,6 +333,8 @@ Object* unpack_objects(json_t* objects) {
332333 if (unpk == -1 ) {
333334 logmsg (TMJ_LOG_ERR , "Unable to unpack object, %s at line %d column %d" , error .text , error .line , error .column );
334335
336+ free (ret );
337+
335338 return NULL ;
336339 }
337340
@@ -1077,14 +1080,14 @@ Map* map_load_json(json_t* root, const char* path) {
10771080 goto fail_tilesets ;
10781081 }
10791082 }
1080-
1081- map -> tileset_count = tileset_count ;
10821083 }
10831084
1085+ map -> tileset_count = tileset_count ;
1086+
10841087 return map ;
10851088
10861089fail_tilesets :
1087- tilesets_free (map -> tilesets , map -> tileset_count );
1090+ tilesets_free (map -> tilesets , idx );
10881091
10891092fail_layers :
10901093 layers_free (map -> layers , map -> layer_count );
0 commit comments