Fixed sequence of DLL_PROCESS_DETACH notification calls. Moved PE_MODREF flags to WINE_MODREF level. Better handling of LoadLibraryEx flags. PE_InitTls() changed to work only on the current thread.
diff --git a/include/module.h b/include/module.h index 9a81bd7..4ae9d7b 100644 --- a/include/module.h +++ b/include/module.h
@@ -111,6 +111,7 @@ typedef struct _wine_modref { struct _wine_modref *next; + struct _wine_modref *prev; MODULE32_TYPE type; union { PE_MODREF pe; @@ -121,13 +122,24 @@ int nDeps; struct _wine_modref **deps; - int initDone; + + int flags; + int refCount; char *modname; char *shortname; char *longname; } WINE_MODREF; +#define WINE_MODREF_INTERNAL 0x00000001 +#define WINE_MODREF_NO_DLL_CALLS 0x00000002 +#define WINE_MODREF_PROCESS_ATTACHED 0x00000004 +#define WINE_MODREF_PROCESS_DETACHED 0x00000008 +#define WINE_MODREF_LOAD_AS_DATAFILE 0x00000010 +#define WINE_MODREF_DONT_RESOLVE_REFS 0x00000020 +#define WINE_MODREF_MARKER 0x80000000 + + /* Resource types */ typedef struct resource_typeinfo_s NE_TYPEINFO;
diff --git a/include/pe_image.h b/include/pe_image.h index 7ba71f5..9ce289f 100644 --- a/include/pe_image.h +++ b/include/pe_image.h
@@ -11,12 +11,6 @@ PIMAGE_IMPORT_DESCRIPTOR pe_import; PIMAGE_EXPORT_DIRECTORY pe_export; PIMAGE_RESOURCE_DIRECTORY pe_resource; - int flags; -#define PE_MODREF_PROCESS_ATTACHED 0x00000001 -#define PE_MODREF_NO_DLL_CALLS 0x00000002 -#define PE_MODREF_RELOCS_DONE 0x00000004 -#define PE_MODREF_TLS_ALLOCED 0x00000008 -#define PE_MODREF_INTERNAL 0x00000010 int tlsindex; } PE_MODREF; @@ -41,8 +35,7 @@ BOOL inherit, LPSTARTUPINFOA startup, LPPROCESS_INFORMATION info ); -struct _THDB; /* forward definition */ -extern void PE_InitTls(struct _THDB*); +extern void PE_InitTls(void); extern void PE_InitDLL(struct _wine_modref *wm, DWORD type, LPVOID lpReserved); extern PIMAGE_RESOURCE_DIRECTORY GetResDirEntryA(PIMAGE_RESOURCE_DIRECTORY,LPCSTR,DWORD,BOOL);
diff --git a/include/thread.h b/include/thread.h index 7bb63a0..4c275cf 100644 --- a/include/thread.h +++ b/include/thread.h
@@ -123,7 +123,6 @@ extern THDB *THREAD_Current(void); extern BOOL THREAD_IsWin16( THDB *thdb ); extern THDB *THREAD_IdToTHDB( DWORD id ); -extern DWORD THREAD_TlsAlloc( THDB *thread ); /* scheduler/sysdeps.c */ extern int SYSDEPS_SpawnThread( THDB *thread );