Control: tags -1 - patch Hi,
On 12/05/18 14:33, Lumin wrote: > control: tag -1 +patch > I think the problem lays in main.cpp : > > 81 // Set configuration directory > 82 //sprintf(writedir, "%s.%s", userdir, application); > 83 sprintf(writedir, "%s%s", userdir, application); > 84 if(!PHYSFS_setWriteDir(writedir)) { > 85 // try to create the directory > 86 char* mkdir = new char[strlen(application) + 2]; > 87 sprintf(mkdir, "%s", application); > 88 if(!PHYSFS_setWriteDir(userdir) || !PHYSFS_mkdir(mkdir)) { > 89 std::ostringstream msg; > 90 msg << "Failed creating configuration directory '" << > 91 writedir << "': " << PHYSFS_getLastError(); > > Looks like that the author forgot to concat the "userdir" and "mkdir" > before really creating it. If that's where the root of problem lies, > a possible fix could be: > > char* mkdir = new char[strlen(userdir) + strlen(application) + 2]; > sprintf(mkdir, "%s%s", userdir, applicatoin); > if(!PHYSFS_setWriteDir(userdir) || !PHYSFS_mkdir(mkdir)) { > > Not verified. Hope it helps. The original code looks correct to me. PHYSFS_mkdir operates relative to the current writeDir, so you shouldn't need to provide a full path (assuming the second PHYSFS_setWriteDir succeeds). I think this is a bug in libphysfs 3.0.1. It seems that in this version (unlike 2.0.3), PHYSFS_setWriteDir has the side effect of creating an empty file if the path it is given does not exist. This will later cause PHYSFS_mkdir to fail even if it's given the right path. This would also explain why this bug is not present in stretch. James
signature.asc
Description: OpenPGP digital signature