[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30753] trunk/blender/source/blender/ blenlib: [#22846] GCC 4.4.1 support in Windows

Sergey Sharybin g.ulairi at gmail.com
Mon Jul 26 12:41:27 CEST 2010


Revision: 30753
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30753
Author:   nazgul
Date:     2010-07-26 12:41:26 +0200 (Mon, 26 Jul 2010)

Log Message:
-----------
[#22846] GCC 4.4.1 support in Windows

In this commit i've fixed crash when opening file browser. This crash was caused
by different _stat structures size in storage.c and filelist.c (because of force
setting __MSVCRT_VERSION__ in storage.c), other errors from report
were fixed earlier.

I've used _stati64 strcutrure and functions and tested on official
mingw-gcc 3.4.5, official mingw-gcc 4.4.0, tdm-mingw-gcc 4.4.1,
cross mingw-gcc 4.4.4 and cross mingw-gcc 4.2.1-sjlj -- everything was
ok in  this configurations (except openexr and opencollada libraries which
requires sjlj compiler, so i was unable to build blender with that
libraries by official mingw-gcc 4.4.0)

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

Modified: trunk/blender/source/blender/blenlib/BLI_storage_types.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_storage_types.h	2010-07-26 10:31:51 UTC (rev 30752)
+++ trunk/blender/source/blender/blenlib/BLI_storage_types.h	2010-07-26 10:41:26 UTC (rev 30753)
@@ -58,6 +58,8 @@
 	char	*path;
 #if (defined(WIN32) || defined(WIN64)) && (_MSC_VER>=1500)
 	struct _stat64 s;
+#elif defined(__MINGW32__)
+	struct _stati64 s;
 #else
 	struct	stat s;
 #endif

Modified: trunk/blender/source/blender/blenlib/intern/storage.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/storage.c	2010-07-26 10:31:51 UTC (rev 30752)
+++ trunk/blender/source/blender/blenlib/intern/storage.c	2010-07-26 10:41:26 UTC (rev 30753)
@@ -29,11 +29,6 @@
  * Some really low-level file thingies.
  */
 
-/* needed for mingw & _stat64i32 */
-#ifdef FREE_WINDOWS
-# define __MSVCRT_VERSION__ 0x0800
-#endif
-
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>	
@@ -255,6 +250,8 @@
 // Excluding other than current MSVC compiler until able to test.
 #if (defined(WIN32) || defined(WIN64)) && (_MSC_VER>=1500)
 					_stat64(dlink->name,&files[actnum].s);
+#elif defined(__MINGW32__)
+					_stati64(dlink->name,&files[actnum].s);
 #else
 					stat(dlink->name,&files[actnum].s);
 #endif
@@ -449,14 +446,14 @@
 	if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0';
 	res = _stat(tmp, &st);
 	if (res == -1) return(0);
-#elif defined(WIN32) && defined(__MINGW32__)
-	struct stat st;
+#elif defined(__MINGW32__)
+	struct _stati64 st;
 	char tmp[FILE_MAXDIR+FILE_MAXFILE];
 	int len, res;
 	BLI_strncpy(tmp, name, FILE_MAXDIR+FILE_MAXFILE);
 	len = strlen(tmp);
 	if (len > 3 && ( tmp[len-1]=='\\' || tmp[len-1]=='/') ) tmp[len-1] = '\0';
-	res = stat(tmp, &st);
+	res = _stati64(tmp, &st);
 	if (res) return(0);
 #else
 	struct stat st;





More information about the Bf-blender-cvs mailing list