- [FIX] jfile petava al intentar pillar un arxiu que no existeix
This commit is contained in:
@@ -285,9 +285,12 @@ 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");
|
||||
fseek(f, 0, SEEK_END);
|
||||
filesize = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
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
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user