- [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.
|
// 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");
|
f = fopen((resource_folder + resourcename).c_str(), binary ? "rb" : "r");
|
||||||
fseek(f, 0, SEEK_END);
|
if (f)
|
||||||
filesize = ftell(f);
|
{
|
||||||
fseek(f, 0, SEEK_SET);
|
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
|
// 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)
|
// 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)
|
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
|
// Usem la funció anterior per a obtinde un FILE*, independentment de on pillem els recursos
|
||||||
FILE *f = getFilePointer(resourcename, filesize, true);
|
FILE *f = getFilePointer(resourcename, filesize, true);
|
||||||
|
|
||||||
|
// Si l'arxiu no existeix, tornem nullptr
|
||||||
|
if (!f) return nullptr;
|
||||||
|
|
||||||
// Reservem memòria per al buffer
|
// Reservem memòria per al buffer
|
||||||
// Si afegim el 0 al final, el tamany del buffer es 1 byte mes gran
|
// Si afegim el 0 al final, el tamany del buffer es 1 byte mes gran
|
||||||
char *buffer = (char *)malloc(filesize + (zeroTerminated ? 1 : 0));
|
char *buffer = (char *)malloc(filesize + (zeroTerminated ? 1 : 0));
|
||||||
|
|||||||
Reference in New Issue
Block a user