From 9f1a92441a804833a1c7b04c7ae67ad9ca3761a9 Mon Sep 17 00:00:00 2001 From: SuperUserNameMan <9801802+SuperUserNameMan@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:48:40 +0200 Subject: [PATCH] rmodels.c, LoadImageFromCgltfImage() : fix base64 padding support This should fix the issue related to `.gltf` embeded image in base64 format, by ignoring `=` padding and calculating the data size in bytes correctly. --- src/rmodels.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/rmodels.c b/src/rmodels.c index a323292ca..4d1dbb9a2 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -4815,7 +4815,9 @@ static Image LoadImageFromCgltfImage(cgltf_image *cgltfImage, const char *texPat else { int base64Size = (int)strlen(cgltfImage->uri + i + 1); - int outSize = 3*(base64Size/4); // TODO: Consider padding (-numberOfPaddingCharacters) + while( cgltfImage->uri[ i + base64Size ] == '=' ) base64Size--; // remove optional paddings + int numberOfEncodedBits = base64Size * 6 - ( base64Size * 6 ) % 8 ; // ignore extra bits + int outSize = numberOfEncodedBits / 8 ; // actual encoded bytes void *data = NULL; cgltf_options options = { 0 };