- [FIX] jfile petava al intentar pillar un arxiu que no existeix

This commit is contained in:
2024-06-13 14:02:53 +02:00
parent 46d46b93cf
commit 65fdc792c3

View File

@@ -285,10 +285,13 @@ namespace file
{
// Si estem pillant els recursos de carpeta, simplement obrim el arxiu en questió i tornem el FILE* associat.
f = fopen((resource_folder + resourcename).c_str(), binary ? "rb" : "r");
if (f)
{
fseek(f, 0, SEEK_END);
filesize = ftell(f);
fseek(f, 0, SEEK_SET);
}
}
// Tornar el punter FILE* al arxiu. OJO! Tenim que tancar-lo quan acabem amb ell
return f;
@@ -297,9 +300,15 @@ namespace file
// Obté un buffer de memòria en format "char*" del arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos)
char *getFileBuffer(const std::string resourcename, int &filesize, const bool zeroTerminated)
{
// Per si de cas falla la cosa, fiquem el filesize a 0
filesize = 0;
// Usem la funció anterior per a obtinde un FILE*, independentment de on pillem els recursos
FILE *f = getFilePointer(resourcename, filesize, true);
// Si l'arxiu no existeix, tornem nullptr
if (!f) return nullptr;
// Reservem memòria per al buffer
// Si afegim el 0 al final, el tamany del buffer es 1 byte mes gran
char *buffer = (char *)malloc(filesize + (zeroTerminated ? 1 : 0));