---------- Forwarded message ---------- Date: Tue, 19 Feb 2002 11:20:41 +0100 (CET) From: Sylvain Petreolle <spetreolle@yahoo.fr> To: wine-users@winehq.com Hi, Using SHLWAPI in native mode with IE6 ends like this : $ wine --winver winme IEXPLORE.EXE [....] Unhandled exception: page fault on read access to 0x00000001 in 32-bit code (0x4081749c). In 32-bit mode. Symbol h_errno is invalid 0x4081749c (PathIsUNCServerShareA+0x44 [path.c:1308] in libshlwapi.so): cmpb $0x5c,0x0(%esi) 1308 if (lpszPath[0]=='\\' && lpszPath[1]=='\\') regs are like this :Wine-dbg>info regs Register dump: CS:0023 SS:002b DS:002b ES:002b FS:008f GS:0000 EIP:4081749c ESP:405c5ce0 EBP:405c5cec EFLAGS:00010246( R- 00 I Z- -P1 ) EAX:405c5d40 EBX:4082c8b4 ECX:00000000 EDX:00000000 ESI:00000001 EDI:4082c5b0 Using last CVS code. ------end of forwarded message------ Looks as if we need something like this to cater for IE6 (I have nothing directly to gain by this. My browser of choice is wget :-) ChangeLog: dlls/shlwapi/path.c: Lawson Whitney <lawson_whitney@juno.com> Protect PathIsUNCServerShare from null lpszPath. diff -ur was/dlls/shlwapi/path.c is/dlls/shlwapi/path.c --- was/dlls/shlwapi/path.c Tue Jan 29 12:08:19 2002 +++ is/dlls/shlwapi/path.c Tue Feb 19 21:45:33 2002 @@ -1305,6 +1305,7 @@ LPCSTR lpszPath) { TRACE("%s\n", debugstr_a(lpszPath)); + if (!lpszPath) return FALSE; if (lpszPath[0]=='\\' && lpszPath[1]=='\\') { int foundbackslash = 0; @@ -1327,6 +1328,7 @@ LPCWSTR lpszPath) { TRACE("%s\n", debugstr_w(lpszPath)); + if (!lpszPath) return FALSE; if (lpszPath[0]=='\\' && lpszPath[1]=='\\') { int foundbackslash = 0; Lawson
diff -ur was/dlls/shlwapi/path.c is/dlls/shlwapi/path.c --- was/dlls/shlwapi/path.c Tue Jan 29 12:08:19 2002 +++ is/dlls/shlwapi/path.c Tue Feb 19 21:45:33 2002 @@ -1305,6 +1305,7 @@ LPCSTR lpszPath) { TRACE("%s\n", debugstr_a(lpszPath)); + if (!lpszPath) return FALSE; if (lpszPath[0]=='\\' && lpszPath[1]=='\\') { int foundbackslash = 0; @@ -1327,6 +1328,7 @@ LPCWSTR lpszPath) { TRACE("%s\n", debugstr_w(lpszPath)); + if (!lpszPath) return FALSE; if (lpszPath[0]=='\\' && lpszPath[1]=='\\') { int foundbackslash = 0;