[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55966] trunk/blender/source/blender/ blenlib/intern/storage.c: Fix #34929: windows would show a " No disk in drive" error popup when one of the recently opened files was on a DVD that' s no longer there in the DVD drive.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Apr 11 16:13:21 CEST 2013


Revision: 55966
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55966
Author:   blendix
Date:     2013-04-11 14:13:20 +0000 (Thu, 11 Apr 2013)
Log Message:
-----------
Fix #34929: windows would show a "No disk in drive" error popup when one of the recently opened files was on a DVD that's no longer there in the DVD drive.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/storage.c

Modified: trunk/blender/source/blender/blenlib/intern/storage.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/storage.c	2013-04-11 13:34:51 UTC (rev 55965)
+++ trunk/blender/source/blender/blenlib/intern/storage.c	2013-04-11 14:13:20 UTC (rev 55966)
@@ -512,13 +512,24 @@
 	 * don't mess with the argument name directly here - elubie */
 	wchar_t *tmp_16 = alloc_utf16_from_8(name, 0);
 	int len, res;
+	unsigned int old_error_mode;
+
 	len = wcslen(tmp_16);
-	if (len > 3 && (tmp_16[len - 1] == L'\\' || tmp_16[len - 1] == L'/') ) tmp_16[len - 1] = '\0';
+	if (len > 3 && (tmp_16[len - 1] == L'\\' || tmp_16[len - 1] == L'/') )
+		tmp_16[len - 1] = '\0';
+
+	/* change error mode so user does not get a "no disk in drive" popup
+	 * when looking for a file on an empty CD/DVD drive */
+	old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
+
 #ifndef __MINGW32__
 	res = _wstat(tmp_16, &st);
 #else
 	res = _wstati64(tmp_16, &st);
 #endif
+
+	SetErrorMode(old_error_mode);
+
 	free(tmp_16);
 	if (res == -1) return(0);
 #else




More information about the Bf-blender-cvs mailing list