Thankyou Alex for your comments, I modified some sources without knowing what was i doing ..i was testing, i'll remove these useless patches.
Alex Ionescu wrote:
On 3-Jan-08, at 4:41 PM, Oriol wrote:
I get an error while trying to install Firefox 2.0 on a bootcd compilation, finally i found the possibly bug is in vfatfs.sys i modified some lines but is not my code.....it seems to install Firefox. Also, testing firefox i found problems with gdi and also done some modifications, still testing them.. Here is my patch..NO WARRANTY he he..
Index: tools/rbuild/configuration.cpp
--- tools/rbuild/configuration.cpp (revision 31587) +++ tools/rbuild/configuration.cpp (working copy) @@ -28,7 +28,7 @@ CheckDependenciesForModuleOnly = false; CompilationUnitsEnabled = true; MakeHandlesInstallDirectories = false;
- GenerateProxyMakefilesInSourceTree = false;
- GenerateProxyMakefilesInSourceTree = true; InstallFiles = false; UseConfigurationInPath = false; UseVSVersionInPath = false;
What? Why? How does this help fix a VFAT bug?
Index: ntoskrnl/include/internal/mm.h
--- ntoskrnl/include/internal/mm.h (revision 31587) +++ ntoskrnl/include/internal/mm.h (working copy) @@ -103,7 +103,7 @@ /*
- Maximum size of the kmalloc area (this is totally arbitary)
*/ -#define MM_KERNEL_MAP_SIZE (16*1024*1024) +#define MM_KERNEL_MAP_SIZE (64*1024*1024) #define MM_KERNEL_MAP_BASE (0xf0c00000)
/*
What? Nobody uses this value anymore, and why would increasing it to 64MB help? These values need to go away.
Index: ntoskrnl/mm/rpoolmgr.h
--- ntoskrnl/mm/rpoolmgr.h (revision 31587) +++ ntoskrnl/mm/rpoolmgr.h (working copy) @@ -32,7 +32,7 @@
#ifndef R_QUECOUNT // 16, 32, 64, 128, 256, 512 -#define R_QUECOUNT 6 +#define R_QUECOUNT 512 #endif//R_QUECOUNT
This slows down the pool considerably.
#ifndef R_RZ @@ -50,7 +50,7 @@
#ifndef R_STACK // R_STACK is the number of stack entries to store in blocks for debug purposes -#define R_STACK 6 +#define R_STACK 32 #else // R_STACK #if R_STACK > 0 && R_STACK < 6 /* Increase the frame depth to get a reasonable back trace */ @@ -152,7 +152,7 @@ } #endif//R_STACK
This just makes debugging easier but uses 6x more memory per pool allocation and is much slower.
-static int +static rulong RQueWhich ( rulong size ) { rulong que, quesize; @@ -888,7 +888,7 @@ rulong UsedSize; PR_FREE FreeBlock; rulong UserSize;
- int que;
long que;
ASSERT(pool); if ( !Addr )
What? Huh? How does this fix VFAT or do anything?
Index: base/system/winlogon/screensaver.c
--- base/system/winlogon/screensaver.c (revision 31587) +++ base/system/winlogon/screensaver.c (working copy) @@ -3,7 +3,7 @@
- PROJECT: ReactOS Winlogon
- FILE: base/system/winlogon/screensaver.c
- PURPOSE: Screen saver management
- PROGRAMMERS: Herv� Poussineau (hpoussin@reactos.org)
*/
- PROGRAMMERS: Herv� Poussineau (hpoussin@reactos.org)
/* INCLUDES *****************************************************************/ @@ -43,20 +43,30 @@ OUT LPDWORD Timeout) { BOOL Enabled;
- if(Timeout==NULL)
- {
ERR("TimeOut is NULL!!!");return;- }
Okay...but...this isn't an optional parameter, so it *should* crash if it's 0.
if (!SystemParametersInfoW(SPI_GETSCREENSAVETIMEOUT, 0, Timeout, 0)) {
WARN("WL: Unable to get screen saver timeout (error %lu).Disabling it\n", GetLastError());
*Timeout = INFINITE;
ERR("WL: Unable to get screen saver timeout (error %lu).Disabling it\n", GetLastError());
if(Timeout==NULL){ERR("TimeOut is still NULL!!!");return;}How can it be still NULL if you've already exited the function above?!
else } else if (!SystemParametersInfoW(SPI_GETSCREENSAVEACTIVE, 0,*Timeout = INFINITE;&Enabled, 0)) {
WARN("WL: Unable to check if screen saver is enabled (error%lu). Disabling it\n", GetLastError());
ERR("WL: Unable to check if screen saver is enabled (error%lu). Disabling it\n", GetLastError()); *Timeout = INFINITE; } else if (!Enabled) {
TRACE("WL: Screen saver is disabled\n");
} elseERR("WL: Screen saver is disabled\n"); *Timeout = INFINITE;@@ -84,7 +94,7 @@ if (!ImpersonateLoggedOnUser(Session->UserToken)) { ERR("ImpersonateLoggedOnUser() failed with error %lu\n", GetLastError());
return 0;
goto cleanup;}
Session->hUserActivity = CreateEventW(NULL, FALSE, FALSE, NULL);
What do these useless screensaver debug print changes have to do with VFAT?
Index: base/system/winlogon/setup.c
--- base/system/winlogon/setup.c (revision 31587) +++ base/system/winlogon/setup.c (working copy) @@ -19,13 +19,15 @@ DWORD GetSetupType(VOID) {
- //CONTEXT("GetSetupType");
Huh?
DWORD dwError; HKEY hKey; DWORD dwType; DWORD dwSize; DWORD dwSetupType;
- TRACE("GetSetupType()\n");
ERR("GetSetupType()\n");
/* Open key */ dwError = RegOpenKeyExW(
@@ -48,11 +50,12 @@ &dwSize);
/* Close key, and check if returned values are correct */
- RegCloseKey(hKey);
- if(dwError==ERROR_SUCCESS)
RegCloseKey(hKey);You're leaking the key handle now!
if (dwError != ERROR_SUCCESS || dwType != REG_DWORD || dwSize !=sizeof(DWORD)) return 0;
- TRACE("GetSetupType() returns %lu\n", dwSetupType);
- ERR("GetSetupType() returns %lu\n", dwSetupType); return dwSetupType;
}
@@ -71,7 +74,7 @@ DWORD dwSize; DWORD dwExitCode;
- TRACE("RunSetup() called\n");
ERR("RunSetup() called\n");
/* Open key */ dwError = RegOpenKeyExW(
@@ -107,7 +110,7 @@ else return FALSE;
- TRACE("Should run '%s' now\n", debugstr_w(CommandLine));
ERR("Should run '%s' now\n", debugstr_w(CommandLine));
/* Start process */ StartupInfo.cb = sizeof(StartupInfo);
@@ -130,7 +133,7 @@ &ProcessInformation); if (!Result) {
TRACE("Failed to run setup process\n");
}ERR("Failed to run setup process\n"); return FALSE;@@ -143,7 +146,7 @@ CloseHandle(ProcessInformation.hThread); CloseHandle(ProcessInformation.hProcess);
- TRACE ("RunSetup() done\n");
ERR ("RunSetup() done\n");
return TRUE;
}
How does spamming the debug log help VFAT?
Index: dll/win32/newdev/newdev.c
--- dll/win32/newdev/newdev.c (revision 31587) +++ dll/win32/newdev/newdev.c (working copy) @@ -1,7 +1,7 @@ /*
- New device installer (newdev.dll)
- Copyright 2005-2006 Herv� Poussineau (hpoussin@reactos.org)
- Copyright 2005-2006 Herv� Poussineau (hpoussin@reactos.org)
2005 Christoph von Wittich (Christoph@ActiveVB.de)- This library is free software; you can redistribute it and/or
@@ -718,7 +718,7 @@ { TRACE("SetupDiGetDeviceRegistryProperty() failed with error 0x%x (InstanceId %s)\n", GetLastError(), debugstr_w(InstanceId));
goto cleanup;
//goto cleanup;Now this code won't return and who knows what side effects that causes...
} if (SetupDiGetDeviceRegistryPropertyW(Index: dll/win32/gdi32/objects/dc.c
--- dll/win32/gdi32/objects/dc.c (revision 31587) +++ dll/win32/gdi32/objects/dc.c (working copy) @@ -58,12 +58,12 @@ hspool, (PVOID) NULL, // NULL for now. (PVOID) &UMdhpdev ); -#if 0 +#if 1 // Handle something other than a normal dc object. if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC) {
- PDC_ATTR Dc_Attr;
- PLDC pLDC;
PDC_ATTR Dc_Attr=NULL;
PLDC pLDC=NULL;
GdiGetHandleUserData((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC, (PVOID)
&Dc_Attr);
@@ -254,7 +254,7 @@ DeleteDC(HDC hDC) { BOOL Ret = TRUE; -#if 0 +#if 1 PDC_ATTR Dc_Attr; PLDC pLDC;
@@ -1342,9 +1342,9 @@ SelectObject(HDC hDC, HGDIOBJ hGdiObj) {
- PDC_ATTR pDc_Attr;
-// HGDIOBJ hOldObj = NULL; -// PTEB pTeb;
PDC_ATTR pDc_Attr=NULL;
HGDIOBJ hOldObj = NULL;
//PTEB pTeb=NULL;
if(!GdiGetHandleUserData(hDC, GDI_OBJECT_TYPE_DC, (PVOID)&pDc_Attr)) {
@@ -1355,9 +1355,10 @@ hGdiObj = GdiFixUpHandle(hGdiObj); if (!GdiIsHandleValid(hGdiObj)) {
}DPRINT1("SelectObject:Handle not valid"); return NULL;
UINT uType = GDI_HANDLE_GET_TYPE(hGdiObj);
switch (uType)
@@ -1369,28 +1370,39 @@ return NtGdiSelectBitmap(hDC, hGdiObj);
case GDI_OBJECT_TYPE_BRUSH:-#if 0 // enable this when support is ready in win32k
hOldObj = pDc_Attr->hbrush;pDc_Attr->ulDirty_ |= DC_BRUSH_DIRTY;pDc_Attr->hbrush = hGdiObj;+#if 1 // enable this when support is ready in win32k
if(pDc_Attr){DPRINT1("SelectObject:Selectng brush & returning oldbrush");
hOldObj = pDc_Attr->hbrush;pDc_Attr->ulDirty_ |= DC_BRUSH_DIRTY;pDc_Attr->hbrush = hGdiObj;}NtGdiSelectBrush(hDC, hGdiObj); return hOldObj;#endif
return NtGdiSelectBrush(hDC, hGdiObj);
case GDI_OBJECT_TYPE_PEN:// case GDI_OBJECT_TYPE_EXTPEN: -#if 0 // enable this when support is ready in win32k
hOldObj = pDc_Attr->hpen;pDc_Attr->ulDirty_ |= DC_PEN_DIRTY;pDc_Attr->hpen = hGdiObj;+#if 1 // enable this when support is ready in win32k
if(pDc_Attr){DPRINT1("SelectObject:Selectng pen & returning oldpen");
hOldObj = pDc_Attr->hpen;pDc_Attr->ulDirty_ |= DC_PEN_DIRTY;pDc_Attr->hpen = hGdiObj;}NtGdiSelectPen(hDC, hGdiObj); return hOldObj;#endif
return NtGdiSelectPen(hDC, hGdiObj);
case GDI_OBJECT_TYPE_FONT:#if 0 pTeb = NtCurrentTeb();
if (((pTeb->GdiTebBatch.HDC == 0) ||
if (pTeb!=NULL && ((pTeb->GdiTebBatch.HDC == 0) || (pTeb->GdiTebBatch.HDC == (ULONG)hDC)) && ((pTeb->GdiTebBatch.Offset + sizeof(GDIBSOBJECT)) <=GDIBATCHBUFSIZE) && (!(pDc_Attr->ulDirty_ & DC_DIBSECTION)))
The TEB can't be NULL, and why did you re-enable James' disabled code? He disabled it for a reason. How is this related to VFAT?
Index: dll/win32/gdi32/misc/misc.c
--- dll/win32/gdi32/misc/misc.c (revision 31587) +++ dll/win32/gdi32/misc/misc.c (working copy) @@ -129,18 +129,23 @@ // Need to test if we have Read & Write access to the VM address space. // BOOL Result = TRUE;
if(Entry->UserData)
if(Entry && Entry->UserData) { volatile CHAR *Current = (volatile CHAR*)Entry->UserData;
_SEH_TRY
if(Current==NULL)Result=FALSE;How can Current be NULL? You've already checked it's not NULL and you've got SEH below...
else {
*Current = *Current;
_SEH_TRY{*Current = *Current;}_SEH_HANDLE{Result = FALSE;}_SEH_END }
_SEH_HANDLE{Result = FALSE;}_SEH_END } else Result = FALSE; // Can not be zero.
Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev
This almost look like a robot-generated patch of completely random, useless and broken code changes. How is any of this useful to FireFox and VFAT?
Best regards, Alex Ionescu
Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev
______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com