Saulius Krasuckas wrote:
Possibly, it works. That just I suck: the patch was not applied. :-/
Well, so long as it's working :)
Instead I am having trouble compiling the libs/wine dir:
loader.c:524: conflicting types for `wine_init' ../../include/wine/library.h:56: previous declaration of `wine_init'
NP, that one required just a correction of function prototype in the header file. Wine is recompiling from ground now. Sorry for the buzz.
OK, I missed that file. I'll resend the diff incase anybody else is interested.
There's probably a better way of doing it so that the wine_init prototype isn't changed, but for now at least people can use valgrind with the patch...
Mike
Index: loader/main.c =================================================================== RCS file: /cvstrees/crossover/office/wine/loader/main.c,v retrieving revision 1.1.1.11 diff -u -r1.1.1.11 main.c --- loader/main.c 16 Jun 2004 02:57:30 -0000 1.1.1.11 +++ loader/main.c 5 Sep 2004 12:56:37 -0000 @@ -32,16 +32,17 @@ int main( int argc, char *argv[] ) { char error[1024]; - int i; + int i, reserve = 0;
if (wine_main_preload_info) { for (i = 0; wine_main_preload_info[i].size; i++) wine_mmap_add_reserved_area( wine_main_preload_info[i].addr, wine_main_preload_info[i].size ); + reserve = 1; }
- wine_init( argc, argv, error, sizeof(error) ); + wine_init( argc, argv, error, sizeof(error), reserve ); fprintf( stderr, "wine: failed to initialize: %s\n", error ); exit(1); } Index: libs/wine/mmap.c =================================================================== RCS file: /cvstrees/crossover/office/wine/libs/wine/mmap.c,v retrieving revision 1.1.1.3 diff -u -r1.1.1.3 mmap.c --- libs/wine/mmap.c 31 Jul 2004 00:38:48 -0000 1.1.1.3 +++ libs/wine/mmap.c 5 Sep 2004 12:56:38 -0000 @@ -249,7 +249,7 @@ /*********************************************************************** * mmap_init */ -void mmap_init(void) +void mmap_init(int reserve) { struct reserved_area *area; struct list *ptr; @@ -258,6 +258,8 @@ char * const stack_ptr = &stack; char *user_space_limit = (char *)0x80000000;
+ if( reserve ) + { /* check for a reserved area starting at the user space limit */ /* to avoid wasting time trying to allocate it again */ LIST_FOR_EACH( ptr, &reserved_areas ) @@ -285,6 +287,7 @@ } else reserve_area( user_space_limit, 0 ); #endif /* __i386__ */ + }
/* reserve the DOS area if not already done */
Index: libs/wine/loader.c =================================================================== RCS file: /cvstrees/crossover/office/wine/libs/wine/loader.c,v retrieving revision 1.1.1.10 diff -u -r1.1.1.10 loader.c --- libs/wine/loader.c 16 Jun 2004 02:57:30 -0000 1.1.1.10 +++ libs/wine/loader.c 5 Sep 2004 12:56:39 -0000 @@ -78,7 +79,7 @@ static int nb_dll_paths; static int dll_path_maxlen;
-extern void mmap_init(void); +extern void mmap_init(int reserve);
/* build the dll load path from the WINEDLLPATH variable */ static void build_dll_path(void) @@ -511,7 +524,7 @@ * * Main Wine initialisation. */ -void wine_init( int argc, char *argv[], char *error, int error_size ) +void wine_init( int argc, char *argv[], char *error, int error_size, int reserve ) { char *wine_debug; int file_exists; @@ -523,7 +536,7 @@ __wine_main_argc = argc; __wine_main_argv = argv; __wine_main_environ = environ; - mmap_init(); + mmap_init( reserve );
if ((wine_debug = getenv("WINEDEBUG"))) { Index: include/wine/library.h =================================================================== RCS file: /cvstrees/crossover/office/wine/include/wine/library.h,v retrieving revision 1.1.1.17 diff -u -r1.1.1.17 library.h --- include/wine/library.h 16 Jun 2004 02:57:30 -0000 1.1.1.17 +++ include/wine/library.h 5 Sep 2004 12:56:39 -0000 @@ -53,7 +53,7 @@ extern char **__wine_main_argv; extern WCHAR **__wine_main_wargv; extern char **__wine_main_environ; -extern void wine_init( int argc, char *argv[], char *error, int error_size ); +extern void wine_init( int argc, char *argv[], char *error, int error_size, int reserve );
/* debugging */