[7/9] msi: Implement the UnregisterMIMEInfo standard action.

Vincent Pelletier plr.vincent at gmail.com
Tue Apr 27 01:55:01 CDT 2010


Le vendredi 02 avril 2010 10:40:07, Hans Leidekker a écrit :
> +        MSI_RecordSetStringW( uirow, 2, mime->Extension->Extension );

I have a segfault on this line when executing GOG.com embedded Adobe Reader 
installer (as of duke_nukem_manhattan_project.exe, SHA1SUM 
98e6056472368867d302f5dc00c6a317de96e713 at least):

wine: Unhandled page fault on read access to 0x00000008 at address 0x7ecf3750 
(thread 0042), starting debugger...
Unhandled exception: page fault on read access to 0x00000008 in 32-bit code 
(0x7ecf3750).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:7ecf3750 ESP:0033f8e0 EBP:0033f938 EFLAGS:00010202(  R- --  I   - - - )
 EAX:00000000 EBX:7ed72e80 ECX:00000000 EDX:00000000
 ESI:005630d8 EDI:00563028
Stack dump:
0x0033f8e0:  00000002 7ed7f4f8 7ed5dfc6 7ed5ddeb
0x0033f8f0:  00000000 f76df7e1 7ed2e89b 7ed72e80
0x0033f900:  00131f00 0055eae0 7ed5ddeb 7ed5dfc6
0x0033f910:  7ed5dfa0 00563370 7ed5df60 00131f60
0x0033f920:  7ed7f4b8 7ed7f4b8 7ecf34fb 7ed72e80
0x0033f930:  00522dc0 00000044 0033f998 7ecda25e
Backtrace:
=>0 0x7ecf3750 ACTION_UnregisterMIMEInfo+0x260(package=0x131f00) 
[/home/vincent/git/wine/dlls/msi/classes.c:1516] in msi (0x0033f998)
  1 0x7ecda25e ACTION_HandleStandardAction+0x1dd(package=<is not available>, 
action="UnregisterMIMEInfo", rc=0x33f9cc, force=0x0001) 
[/home/vincent/git/wine/dlls/msi/action.c:7089] in msi (0x0033f9e8)

Note: of-by-one line count, as I added a WARN to log mime->Extension value, 
which confirms the problem (3rd line):

warn:msi:ACTION_UnregisterMIMEInfo Unregistering MIME type L"application/pdf"
warn:msi:ACTION_UnregisterMIMEInfo Failed to delete MIME key 2
warn:msi:ACTION_UnregisterMIMEInfo mime->Extension = (nil)

I believe the mime->InstallMe condition is too relaxed, as it does check mime-
>Extension, but with || (reindented code, for wordwrap):
> +  mime->InstallMe = (mime->InstallMe ||
> +                    (mime->Class && mime->Class->Installed) ||
> +                    (mime->Extension && mime->Extension->Installed));

Regards,
-- 
Vincent Pelletier



More information about the wine-devel mailing list