summaryrefslogtreecommitdiff
path: root/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-games/physfs/files/physfs-3.0.1-setwritedir.patch')
-rw-r--r--dev-games/physfs/files/physfs-3.0.1-setwritedir.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch b/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch
new file mode 100644
index 000000000000..9673e12a2b23
--- /dev/null
+++ b/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch
@@ -0,0 +1,40 @@
+Upstream-Status: Backport
+[https://hg.icculus.org/icculus/physfs/rev/a29fef4a20fd]
+
+# HG changeset patch
+# User Ryan C. Gordon <icculus@icculus.org>
+# Date 1526514891 14400
+# Node ID a29fef4a20fd79ead82998c91dc4828ed5061cb5
+# Parent db8f944df5c56f0244229813203fb5b24e8d9968
+PHYSFS_setWriteDir() shouldn't create an empty file if the dir doesn't exist.
+(transplanted from 2653b3bc19c9ba7d1e6bf53566719e4e30935382)
+
+diff -r db8f944df5c5 -r a29fef4a20fd src/physfs.c
+--- a/src/physfs.c Thu Apr 19 10:06:38 2018 -0400
++++ b/src/physfs.c Wed May 16 19:54:51 2018 -0400
+@@ -879,13 +879,20 @@
+
+ if (io == NULL)
+ {
++ /* file doesn't exist, etc? Just fail out. */
++ PHYSFS_Stat statbuf;
++ BAIL_IF_ERRPASS(!__PHYSFS_platformStat(d, &statbuf, 1), NULL);
++
+ /* DIR gets first shot (unlike the rest, it doesn't deal with files). */
+- retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed);
+- if (retval || claimed)
+- return retval;
++ if (statbuf.filetype == PHYSFS_FILETYPE_DIRECTORY)
++ {
++ retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed);
++ if (retval || claimed)
++ return retval;
++ } /* if */
+
+ io = __PHYSFS_createNativeIo(d, forWriting ? 'w' : 'r');
+- BAIL_IF_ERRPASS(!io, 0);
++ BAIL_IF_ERRPASS(!io, NULL);
+ created_io = 1;
+ } /* if */
+
+