Author: greatlrd
Date: Mon May 29 16:43:01 2006
New Revision: 22106
URL: http://svn.reactos.ru/svn/reactos?rev=22106&view=rev
Log:
Hidden bug in our tcp/ip stack, at shutdown api the so can be NULL if that happen, ReactOS will bsod the tcp/ip stack.
Arty can u look if this changes is right if not revert it. This changes was tested in fireforx at http://www.mirc.com/get.html and try d/l mirc. This patch do not make firefox bsod, instead it genrate a long crash log at serial debug.
Modified:
trunk/reactos/lib/drivers/oskittcp/oskittcp/uipc_socket.c
Modified: trunk/reactos/lib/drivers/oskittcp/oskittcp/uipc_socket.c
URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/lib/drivers/oskittcp/oskitt…
==============================================================================
--- trunk/reactos/lib/drivers/oskittcp/oskittcp/uipc_socket.c (original)
+++ trunk/reactos/lib/drivers/oskittcp/oskittcp/uipc_socket.c Mon May 29 16:43:01 2006
@@ -827,6 +827,19 @@
register struct socket *so;
register int how;
{
+ if (so == NULL)
+ {
+ register struct protosw *pr = NULL;
+
+ how++;
+ if (how & FREAD)
+ sorflush(so);
+ if (how & FWRITE)
+ return ((*pr->pr_usrreq)(so, PRU_SHUTDOWN,
+ (struct mbuf *)0, (struct mbuf *)0, (struct mbuf *)0));
+ return (0);
+ }
+
register struct protosw *pr = so->so_proto;
how++;
Author: greatlrd
Date: Mon May 29 15:28:55 2006
New Revision: 22105
URL: http://svn.reactos.ru/svn/reactos?rev=22105&view=rev
Log:
revers r22073 and r22075 bugfix for envinmert for it break firefox, not tested in trunk, I tested to revers this change in r22075
Modified:
trunk/reactos/lib/crt/misc/environ.c
Modified: trunk/reactos/lib/crt/misc/environ.c
URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/lib/crt/misc/environ.c?rev=…
==============================================================================
--- trunk/reactos/lib/crt/misc/environ.c (original)
+++ trunk/reactos/lib/crt/misc/environ.c Mon May 29 15:28:55 2006
@@ -222,7 +222,6 @@
if (option == NULL || (epos = wcschr(option, L'=')) == NULL)
return -1;
-
remove = (epos[1] == 0);
/* Duplicate environment if needed. */
@@ -245,15 +244,6 @@
memcpy(name, option, (epos - option) * sizeof(wchar_t));
name[epos - option] = 0;
- if ((*name == 0) || (wcschr(option, L'=') !=NULL))
- {
- /* fixme check see if name contain any space or so
- so we really locate first char in name and compare
- it with equal
- */
- free(name);
- return -1;
- }
/* Find the option we're trying to modify. */
for (index = 0, wenvptr = _wenviron; *wenvptr != NULL; wenvptr++, index++)
{
Author: hpoussin
Date: Mon May 29 15:09:54 2006
New Revision: 22104
URL: http://svn.reactos.ru/svn/reactos?rev=22104&view=rev
Log:
Do the normal install before custom install actions.
So, we should get the right .inf filename in SP_DRVINFO_DETAIL_DATA.InfFileName, as it is modified if the file is copied to %SYSTEMROOT%/Inf
Modified:
trunk/reactos/dll/cpl/desk/classinst.c
Modified: trunk/reactos/dll/cpl/desk/classinst.c
URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/cpl/desk/classinst.c?re…
==============================================================================
--- trunk/reactos/dll/cpl/desk/classinst.c (original)
+++ trunk/reactos/dll/cpl/desk/classinst.c Mon May 29 15:09:54 2006
@@ -36,7 +36,7 @@
if (InstallFunction != DIF_INSTALLDEVICE)
return ERROR_DI_DO_DEFAULT;
- /* Set DI_NEEDRESTART flag */
+ /* Set DI_DONOTCALLCONFIGMG flag */
InstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
result = SetupDiGetDeviceInstallParams(DeviceInfoSet, DeviceInfoData, &InstallParams);
if (!result)
@@ -46,13 +46,22 @@
goto cleanup;
}
- InstallParams.Flags |= DI_NEEDRESTART;
+ InstallParams.Flags |= DI_DONOTCALLCONFIGMG;
result = SetupDiSetDeviceInstallParams(DeviceInfoSet, DeviceInfoData, &InstallParams);
if (!result)
{
rc = GetLastError();
DPRINT("SetupDiSetDeviceInstallParams() failed with error 0x%lx\n", rc);
+ goto cleanup;
+ }
+
+ /* Do normal install */
+ result = SetupDiInstallDevice(DeviceInfoSet, DeviceInfoData);
+ if (!result)
+ {
+ rc = GetLastError();
+ DPRINT("SetupDiGetDeviceRegistryProperty() failed with error 0x%lx\n", rc);
goto cleanup;
}
@@ -96,15 +105,6 @@
goto cleanup;
}
_tcscat(SectionName, _T(".SoftwareSettings"));
-
- /* Do normal install */
- result = SetupDiInstallDevice(DeviceInfoSet, DeviceInfoData);
- if (!result)
- {
- rc = GetLastError();
- DPRINT("SetupDiGetDeviceRegistryProperty() failed with error 0x%lx\n", rc);
- goto cleanup;
- }
/* Open driver registry key and create Settings subkey */
hDriverKey = SetupDiOpenDevRegKey(