[Vm-dev] [commit][2949] Fix opening a write-only file, beiung careful not to destroy its contents.

commits at squeakvm.org commits at squeakvm.org
Fri Jun 6 21:00:45 UTC 2014


Revision: 2949
Author:   eliot
Date:     2014-06-06 14:00:43 -0700 (Fri, 06 Jun 2014)
Log Message:
-----------
Fix opening a write-only file, beiung careful not to destroy its contents.
See http://lists.squeakfoundation.org/pipermail/vm-dev/2014-June/015699.html

Modified Paths:
--------------
    trunk/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c

Modified: trunk/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c
===================================================================
--- trunk/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c	2014-06-05 23:46:11 UTC (rev 2948)
+++ trunk/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c	2014-06-06 21:00:43 UTC (rev 2949)
@@ -245,6 +245,11 @@
 			   try opening it in write mode to create a new, empty file.
 			*/
 			setFile(f, fopen(cFileName, "w+b"));
+			/* and if w+b fails, try ab to open a write-only file in append mode,
+			   not wb which opens a write-only file but overwrites its contents.
+			 */
+			if (getFile(f) == NULL)
+				setFile(f, fopen(cFileName, "ab"));
 			if (getFile(f) != NULL) {
 			    char type[4],creator[4];
 				dir_GetMacFileTypeAndCreator(sqFileName, sqFileNameSize, type, creator);



More information about the Vm-dev mailing list