mirror of https://github.com/mgba-emu/mgba.git
3DS: Fix opening files in directory names with trailing slashes
This commit is contained in:
parent
a796c167e4
commit
69db3f41a3
1
CHANGES
1
CHANGES
|
@ -35,6 +35,7 @@ Bugfixes:
|
||||||
- Qt: Fix locale being set to English on settings save (fixes mgba.io/i/906)
|
- Qt: Fix locale being set to English on settings save (fixes mgba.io/i/906)
|
||||||
- LR35902: Fix watchpoints not reporting new value
|
- LR35902: Fix watchpoints not reporting new value
|
||||||
- GBA Audio: Increase PSG volume (fixes mgba.io/i/932)
|
- GBA Audio: Increase PSG volume (fixes mgba.io/i/932)
|
||||||
|
- 3DS: Fix opening files in directory names with trailing slashes
|
||||||
Misc:
|
Misc:
|
||||||
- GBA Timer: Use global cycles for timers
|
- GBA Timer: Use global cycles for timers
|
||||||
- GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)
|
- GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)
|
||||||
|
|
|
@ -241,7 +241,11 @@ static struct VFile* _vd3dOpenFile(struct VDir* vd, const char* path, int mode)
|
||||||
}
|
}
|
||||||
const char* dir = vd3d->path;
|
const char* dir = vd3d->path;
|
||||||
char* combined = malloc(sizeof(char) * (strlen(path) + strlen(dir) + 2));
|
char* combined = malloc(sizeof(char) * (strlen(path) + strlen(dir) + 2));
|
||||||
|
if (dir[strlen(dir) - 1] == '/') {
|
||||||
|
sprintf(combined, "%s%s", dir, path);
|
||||||
|
} else {
|
||||||
sprintf(combined, "%s/%s", dir, path);
|
sprintf(combined, "%s/%s", dir, path);
|
||||||
|
}
|
||||||
|
|
||||||
struct VFile* file = VFileOpen(combined, mode);
|
struct VFile* file = VFileOpen(combined, mode);
|
||||||
free(combined);
|
free(combined);
|
||||||
|
@ -255,7 +259,11 @@ static struct VDir* _vd3dOpenDir(struct VDir* vd, const char* path) {
|
||||||
}
|
}
|
||||||
const char* dir = vd3d->path;
|
const char* dir = vd3d->path;
|
||||||
char* combined = malloc(sizeof(char) * (strlen(path) + strlen(dir) + 2));
|
char* combined = malloc(sizeof(char) * (strlen(path) + strlen(dir) + 2));
|
||||||
|
if (dir[strlen(dir) - 1] == '/') {
|
||||||
|
sprintf(combined, "%s%s", dir, path);
|
||||||
|
} else {
|
||||||
sprintf(combined, "%s/%s", dir, path);
|
sprintf(combined, "%s/%s", dir, path);
|
||||||
|
}
|
||||||
|
|
||||||
struct VDir* vd2 = VDirOpen(combined);
|
struct VDir* vd2 = VDirOpen(combined);
|
||||||
if (!vd2) {
|
if (!vd2) {
|
||||||
|
@ -272,7 +280,11 @@ static bool _vd3dDeleteFile(struct VDir* vd, const char* path) {
|
||||||
}
|
}
|
||||||
const char* dir = vd3d->path;
|
const char* dir = vd3d->path;
|
||||||
char* combined = malloc(sizeof(char) * (strlen(path) + strlen(dir) + 2));
|
char* combined = malloc(sizeof(char) * (strlen(path) + strlen(dir) + 2));
|
||||||
|
if (dir[strlen(dir) - 1] == '/') {
|
||||||
|
sprintf(combined, "%s%s", dir, path);
|
||||||
|
} else {
|
||||||
sprintf(combined, "%s/%s", dir, path);
|
sprintf(combined, "%s/%s", dir, path);
|
||||||
|
}
|
||||||
|
|
||||||
uint16_t utf16Path[PATH_MAX + 1];
|
uint16_t utf16Path[PATH_MAX + 1];
|
||||||
ssize_t units = utf8_to_utf16(utf16Path, (const uint8_t*) combined, PATH_MAX);
|
ssize_t units = utf8_to_utf16(utf16Path, (const uint8_t*) combined, PATH_MAX);
|
||||||
|
|
Loading…
Reference in New Issue