fix json parsing errors
continuous-integration/drone/push Build is passing Details

pull/1/head
cosmonaut 2023-12-06 18:27:28 -08:00
parent 80382cc83d
commit d99ef4d2c2
1 changed files with 24 additions and 12 deletions

View File

@ -226,11 +226,14 @@ static uint8_t json_object_has_key(const json_object_t *object, const char* name
while (SDL_strcmp(currentName, name) != 0) while (SDL_strcmp(currentName, name) != 0)
{ {
if (currentElement->next != NULL) if (currentElement->next == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Key %s not found in JSON!", name); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Key %s not found in JSON!", name);
return 0; return 0;
} }
currentElement = currentElement->next;
currentName = currentElement->name->string;
} }
return 1; return 1;
@ -243,9 +246,9 @@ static json_object_element_t* json_object_get_element_by_name(const json_object_
while (SDL_strcmp(currentName, name) != 0) while (SDL_strcmp(currentName, name) != 0)
{ {
if (currentElement->next != NULL) if (currentElement->next == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Key %s not found in JSON!", name); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Key %s not found in JSON!", name);
return NULL; return NULL;
} }
@ -269,7 +272,7 @@ static json_object_t* json_object_get_object(const json_object_t *object, const
if (obj == NULL) if (obj == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Value with key %s was not an object!", name); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Value with key %s was not an object!", name);
} }
return obj; return obj;
@ -288,7 +291,7 @@ static const char* json_object_get_string(const json_object_t *object, const cha
if (str == NULL) if (str == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Value with key %s was not a string!", name); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Value with key %s was not a string!", name);
return NULL; return NULL;
} }
@ -308,7 +311,7 @@ static uint32_t json_object_get_uint(const json_object_t *object, const char* na
if (num == NULL) if (num == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Value with key %s was not a number!", name); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Value with key %s was not a number!", name);
return 0; return 0;
} }
@ -328,7 +331,7 @@ static double json_object_get_double(const json_object_t *object, const char* na
if (num == NULL) if (num == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Value with key %s was not a string!", name); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Value with key %s was not a string!", name);
return 0; return 0;
} }
@ -361,7 +364,7 @@ Wellspring_Font* Wellspring_CreateFont(
if (jsonObject == NULL) if (jsonObject == NULL)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Atlas JSON is invalid! Bailing!"); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Atlas JSON is invalid! Bailing!");
Wellspring_free(font->fontBytes); Wellspring_free(font->fontBytes);
Wellspring_free(font); Wellspring_free(font);
return NULL; return NULL;
@ -369,7 +372,7 @@ Wellspring_Font* Wellspring_CreateFont(
if (SDL_strcmp(jsonObject->start->name->string, "atlas") != 0) if (SDL_strcmp(jsonObject->start->name->string, "atlas") != 0)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Atlas JSON is invalid! Bailing!"); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Atlas JSON is invalid! Bailing!");
Wellspring_free(jsonRoot); Wellspring_free(jsonRoot);
Wellspring_free(font->fontBytes); Wellspring_free(font->fontBytes);
Wellspring_free(font); Wellspring_free(font);
@ -384,7 +387,7 @@ Wellspring_Font* Wellspring_CreateFont(
if (SDL_strcmp(atlasType, "msdf") != 0) if (SDL_strcmp(atlasType, "msdf") != 0)
{ {
SDL_LogError(SDL_LOG_CATEGORY_CUSTOM, "Atlas is not MSDF! Bailing!"); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Atlas is not MSDF! Bailing!");
Wellspring_free(jsonRoot); Wellspring_free(jsonRoot);
Wellspring_free(font->fontBytes); Wellspring_free(font->fontBytes);
Wellspring_free(font); Wellspring_free(font);
@ -422,7 +425,7 @@ Wellspring_Font* Wellspring_CreateFont(
// first codepoint on first range // first codepoint on first range
font->packer.ranges[charRangeIndex].firstCodepoint = codepoint; font->packer.ranges[charRangeIndex].firstCodepoint = codepoint;
} }
else if (codepoint != font->packer.ranges[charRangeIndex].firstCodepoint + font->packer.ranges[charRangeIndex].charCount + 1) else if (codepoint != font->packer.ranges[charRangeIndex].firstCodepoint + font->packer.ranges[charRangeIndex].charCount)
{ {
// codepoint is not continuous, start a new range // codepoint is not continuous, start a new range
charRangeIndex += 1; charRangeIndex += 1;
@ -436,6 +439,15 @@ Wellspring_Font* Wellspring_CreateFont(
font->packer.ranges[charRangeIndex].data = Wellspring_realloc(font->packer.ranges[charRangeIndex].data, sizeof(PackedChar) * font->packer.ranges[charRangeIndex].charCount); font->packer.ranges[charRangeIndex].data = Wellspring_realloc(font->packer.ranges[charRangeIndex].data, sizeof(PackedChar) * font->packer.ranges[charRangeIndex].charCount);
PackedChar *packedChar = &font->packer.ranges[charRangeIndex].data[font->packer.ranges[charRangeIndex].charCount - 1]; PackedChar *packedChar = &font->packer.ranges[charRangeIndex].data[font->packer.ranges[charRangeIndex].charCount - 1];
packedChar->atlasLeft = 0;
packedChar->atlasRight = 0;
packedChar->atlasTop = 0;
packedChar->atlasBottom = 0;
packedChar->planeLeft = 0;
packedChar->planeRight = 0;
packedChar->planeTop = 0;
packedChar->planeBottom = 0;
packedChar->xAdvance = json_object_get_double(currentGlyphObject, "advance"); packedChar->xAdvance = json_object_get_double(currentGlyphObject, "advance");
if (json_object_has_key(currentGlyphObject, "atlasBounds")) if (json_object_has_key(currentGlyphObject, "atlasBounds"))